Skip to content

Tensorflow.js Converter: Usage of save_format when converting to graph model causes error on Keras 3 #8229

@JRF63

Description

@JRF63

System information

  • Have I written custom code (as opposed to using a stock example script provided in TensorFlow.js): No
  • OS Platform and Distribution (e.g., Linux Ubuntu 16.04): WSL2
  • Mobile device (e.g. iPhone 8, Pixel 2, Samsung Galaxy) if the issue happens on mobile device: No
  • TensorFlow.js installed from (npm or script link): Not applicable
  • TensorFlow.js version (use command below): Not applicable
  • Browser version: Not applicable
  • Tensorflow.js Converter Version: 4.17

Describe the current behavior

tensorflow 2.16.1 requires keras>=3.0.0, but I think passing the save_format argument is a hard error in keras>=3.0.0 if the extension is not .h5/.hdf5/.keras (current code is using a .savedmodel).

Describe the expected behavior

Avoid using save_format.

Standalone code to reproduce the issue

from tensorflow_model_optimization.python.core.keras.compat import keras

model = keras.Sequential(
    [
        keras.layers.InputLayer(input_shape=(28, 28)),
        keras.layers.Reshape(target_shape=(28, 28, 1)),
        keras.layers.Conv2D(filters=12, kernel_size=(3, 3), activation="relu"),
        keras.layers.MaxPooling2D(pool_size=(2, 2)),
        keras.layers.Flatten(),
        keras.layers.Dense(10),
    ]
)

model.compile(
    optimizer="adam",
    loss=keras.losses.SparseCategoricalCrossentropy(from_logits=True),
    metrics=["accuracy"],
)

model.save("test.keras")

then

tensorflowjs_converter --input_format=keras --output_format=tfjs_graph_model --quantize_uint8=* test.keras webmodel

Other info / logs

Traceback (most recent call last):
  File "/home/user/tensorflow-spreads/venv/bin/tensorflowjs_converter", line 8, in <module>
    sys.exit(pip_main())
  File "/home/user/tensorflow-spreads/venv/lib/python3.10/site-packages/tensorflowjs/converters/converter.py", line 958, in pip_main
    main([' '.join(sys.argv[1:])])
  File "/home/user/tensorflow-spreads/venv/lib/python3.10/site-packages/tensorflowjs/converters/converter.py", line 962, in main
    convert(argv[0].split(' '))
  File "/home/user/tensorflow-spreads/venv/lib/python3.10/site-packages/tensorflowjs/converters/converter.py", line 948, in convert
    _dispatch_converter(input_format, output_format, args, quantization_dtype_map,
  File "/home/user/tensorflow-spreads/venv/lib/python3.10/site-packages/tensorflowjs/converters/converter.py", line 634, in _dispatch_converter
    dispatch_keras_h5_to_tfjs_graph_model_conversion(
  File "/home/user/tensorflow-spreads/venv/lib/python3.10/site-packages/tensorflowjs/converters/converter.py", line 227, in dispatch_keras_h5_to_tfjs_graph_model_conversion
    model.save(temp_savedmodel_dir, include_optimizer=False, save_format='tf')
  File "/home/user/tensorflow-spreads/venv/lib/python3.10/site-packages/keras/src/utils/traceback_utils.py", line 122, in error_handler
    raise e.with_traceback(filtered_tb) from None
  File "/home/user/tensorflow-spreads/venv/lib/python3.10/site-packages/keras/src/saving/saving_api.py", line 66, in save_model
    raise ValueError(
ValueError: The `save_format` argument is deprecated in Keras 3. Please remove this argument and pass a file path with either `.keras` or `.h5` extension.Received: save_format=tf

Setting the env var export TF_USE_LEGACY_KERAS=1 avoids this problem.

Metadata

Metadata

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions