tensorflow / tensorflow

An Open Source Machine Learning Framework for Everyone

Home Page:https://tensorflow.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Cannot save Keras model when v2 behavior is disabled

rsujeevan opened this issue · comments

Issue type

Bug

Have you reproduced the bug with TensorFlow Nightly?

No

Source

binary

TensorFlow version

2.15.1

Custom code

Yes

OS platform and distribution

Linux Ubuntu 20.04.5

Mobile device

No response

Python version

3.11.9

Bazel version

No response

GCC/compiler version

No response

CUDA/cuDNN version

11.2/8.9

GPU model and memory

No response

Current behavior?

Since Tensorflow 2.13, I am unable to save Keras models when using graph execution in Tensorflow v1 behaviour. When I attempt to save, I get the following error:

Traceback (most recent call last):
  File "/tf/ser_repro.py", line 13, in <module>
    model.compile(loss=loss, optimizer=used_optimizer)
  File "/tf/env/lib/python3.11/site-packages/tensorflow/python/trackable/base.py", line 204, in _method_wrapper
    result = method(self, *args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/tf/env/lib/python3.11/site-packages/keras/src/engine/training_v1.py", line 321, in compile
    self._set_optimizer(optimizer)
  File "/tf/env/lib/python3.11/site-packages/keras/src/engine/training_v1.py", line 1473, in _set_optimizer
    self.optimizer = optimizers.get(optimizer)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/tf/env/lib/python3.11/site-packages/keras/src/optimizers/__init__.py", line 306, in get
    return convert_to_legacy_optimizer(identifier)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/tf/env/lib/python3.11/site-packages/keras/src/optimizers/__init__.py", line 239, in convert_to_legacy_optimizer
    config = optimizer.get_config()
             ^^^^^^^^^^^^^^^^^^^^^^
  File "/tf/env/lib/python3.11/site-packages/keras/src/optimizers/adam.py", line 211, in get_config
    "learning_rate": self._serialize_hyperparameter(
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/tf/env/lib/python3.11/site-packages/keras/src/optimizers/optimizer.py", line 726, in _serialize_hyperparameter
    return hyperparameter.numpy()
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/tf/env/lib/python3.11/site-packages/tensorflow/python/ops/resource_variable_ops.py", line 690, in numpy
    raise NotImplementedError(
NotImplementedError: numpy() is only available when eager execution is enabled.

Standalone code to reproduce the issue

import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()

import keras
from keras import layers

inp = keras.layers.Input(shape=(1,), name="input")
result = keras.layers.Dense(250, name="dense_layer")(inp)

model = keras.models.Model(inp, result, name="mdl")
loss = "categorical_crossentropy"
used_optimizer = keras.optimizers.Adam(learning_rate=0.01)
model.compile(loss=loss, optimizer=used_optimizer)

model.save("test-model.keras")

Relevant log output

2024-05-05 05:31:41.834245: E external/local_xla/xla/stream_executor/cuda/cuda_dnn.cc:9261] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered
2024-05-05 05:31:41.834286: E external/local_xla/xla/stream_executor/cuda/cuda_fft.cc:607] Unable to register cuFFT factory: Attempting to register factory for plugin cuFFT when one has already been registered
2024-05-05 05:31:41.836617: E external/local_xla/xla/stream_executor/cuda/cuda_blas.cc:1515] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered
2024-05-05 05:31:41.846554: I tensorflow/core/platform/cpu_feature_guard.cc:182] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.
To enable the following instructions: AVX2 AVX512F FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags.
2024-05-05 05:31:42.773103: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Could not find TensorRT
WARNING:tensorflow:From /tf/env/lib/python3.11/site-packages/tensorflow/python/compat/v2_compat.py:108: disable_resource_variables (from tensorflow.python.ops.variable_scope) is deprecated and will be removed in a future version.
Instructions for updating:
non-resource variables are not supported in the long term
2024-05-05 05:31:43.608937: W tensorflow/core/common_runtime/gpu/gpu_device.cc:2256] Cannot dlopen some GPU libraries. Please make sure the missing libraries mentioned above are installed properly if you would like to use GPU. Follow the guide at https://www.tensorflow.org/install/gpu for how to download and setup the required libraries for your platform.
Skipping registering GPU devices...
Traceback (most recent call last):
  File "/tf/ser_repro.py", line 13, in <module>
    model.compile(loss=loss, optimizer=used_optimizer)
  File "/tf/env/lib/python3.11/site-packages/tensorflow/python/trackable/base.py", line 204, in _method_wrapper
    result = method(self, *args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/tf/env/lib/python3.11/site-packages/keras/src/engine/training_v1.py", line 321, in compile
    self._set_optimizer(optimizer)
  File "/tf/env/lib/python3.11/site-packages/keras/src/engine/training_v1.py", line 1473, in _set_optimizer
    self.optimizer = optimizers.get(optimizer)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/tf/env/lib/python3.11/site-packages/keras/src/optimizers/__init__.py", line 306, in get
    return convert_to_legacy_optimizer(identifier)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/tf/env/lib/python3.11/site-packages/keras/src/optimizers/__init__.py", line 239, in convert_to_legacy_optimizer
    config = optimizer.get_config()
             ^^^^^^^^^^^^^^^^^^^^^^
  File "/tf/env/lib/python3.11/site-packages/keras/src/optimizers/adam.py", line 211, in get_config
    "learning_rate": self._serialize_hyperparameter(
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/tf/env/lib/python3.11/site-packages/keras/src/optimizers/optimizer.py", line 726, in _serialize_hyperparameter
    return hyperparameter.numpy()
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/tf/env/lib/python3.11/site-packages/tensorflow/python/ops/resource_variable_ops.py", line 690, in numpy
    raise NotImplementedError(
NotImplementedError: numpy() is only available when eager execution is enabled.