Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

tf2onnx.convert.from_keras does not work anymore with tensorflow >= 2.16 #2348

Open
Zyrin opened this issue Jul 29, 2024 · 4 comments
Open
Labels
bug An unexpected problem or unintended behavior

Comments

@Zyrin
Copy link
Contributor

Zyrin commented Jul 29, 2024

Describe the bug
After updating to tensorflow 2.17 (from 2.15) we noticed that tf2onnx.convert.from_keras does not wort anymore. See examples down below.

Urgency
Not particularly urgent for us (but maybe for others?).

System information

  • OS Platform and Distribution (e.g., Linux Ubuntu 18.04*): 22.04
  • TensorFlow Version: >=2.16
  • Python version:3.10.12

To Reproduce
Here is a simple code snippet with keras.Sequential to reproduce the problem:

import keras
import tf2onnx

model = keras.Sequential([keras.layers.Input((80, 80, 3)), keras.layers.Conv2D(8, 1, 1)])

onnx_model, _ = tf2onnx.convert.from_keras(model, opset = 18, output_path = "test.onnx")

It fails with the following output:

Traceback (most recent call last):
  File ".../test.py", line 6, in <module>
    onnx_model, _ = tf2onnx.convert.from_keras(model, opset = 18, output_path = "test.onnx")
  File ".../.venv/lib/python3.10/site-packages/tf2onnx/convert.py", line 442, in from_keras
    old_out_names = _rename_duplicate_keras_model_names(model)
  File ".../.venv/lib/python3.10/site-packages/tf2onnx/convert.py", line 331, in _rename_duplicate_keras_model_names
    if model.output_names and len(set(model.output_names)) != len(model.output_names):
AttributeError: 'Sequential' object has no attribute 'output_names'. Did you mean: 'output_shape'?

Functional style models like the following:

import keras
import tf2onnx

input = keras.layers.Input((80, 80, 3))
x = keras.layers.Conv2D(8, 1, 1)(input)
model = keras.Model(inputs = input, outputs = x)

onnx_model, _ = tf2onnx.convert.from_keras(model, opset = 18, output_path = "test.onnx")

also fail and produce a different output:

Traceback (most recent call last):
  File ".../test.py", line 8, in <module>
    onnx_model, _ = tf2onnx.convert.from_keras(model, opset = 18, output_path = "test.onnx")
  File ".../.venv/lib/python3.10/site-packages/tf2onnx/convert.py", line 446, in from_keras
    function = _saving_utils.trace_model_call(model, input_signature)
  File ".../.venv/lib/python3.10/site-packages/tensorflow/python/keras/saving/saving_utils.py", line 115, in trace_model_call
    input_signature = model_input_signature(model)
  File ".../.venv/lib/python3.10/site-packages/tensorflow/python/keras/saving/saving_utils.py", line 74, in model_input_signature
    input_specs = model._get_save_spec(dynamic_batch=not keep_original_batch_size)  # pylint: disable=protected-access
AttributeError: 'Functional' object has no attribute '_get_save_spec'. Did you mean: '_set_save_spec'?
@Zyrin Zyrin added the bug An unexpected problem or unintended behavior label Jul 29, 2024
@fatcat-z
Copy link
Collaborator

fatcat-z commented Aug 1, 2024

Didn't upgrade tf2onnx to support 2.17 yet, it's in the plan.

@xjorma
Copy link

xjorma commented Nov 10, 2024

Hello,
Is this will be fixed one day?

@fatcat-z
Copy link
Collaborator

Hello, Is this will be fixed one day?

Sure.

@xjorma
Copy link

xjorma commented Nov 11, 2024

Hello, Is this will be fixed one day?

Sure.

Thanks,
Project are often very complex, and downgrading tensorflow version is not always possible.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug An unexpected problem or unintended behavior
Projects
None yet
Development

No branches or pull requests

3 participants