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

AttributeError: 'FuncGraph' object has no attribute '_captures' #2172

Open
rgaufman opened this issue May 10, 2023 · 14 comments
Open

AttributeError: 'FuncGraph' object has no attribute '_captures' #2172

rgaufman opened this issue May 10, 2023 · 14 comments
Labels
bug An unexpected problem or unintended behavior pending on user response Waiting for more information or validation from user

Comments

@rgaufman
Copy link

rgaufman commented May 10, 2023

Describe the bug
I installed tf2onnx.convert with (I also tried the stable version, same result):

pip uninstall tf2onnx
pip3 install git+https://github.com/onnx/tensorflow-onnx

When I run it, I see:

$ python3 -m tf2onnx.convert --opset 10 \
  --saved-model ssd_mobilenet_v1_coco_2018_01_28/saved_model \
  --output model.onnx
<frozen runpy>:128: RuntimeWarning: 'tf2onnx.convert' found in sys.modules after import of package 'tf2onnx', but prior to execution of 'tf2onnx.convert'; this may result in unpredictable behaviour
2023-05-10 18:55:25,257 - WARNING - '--tag' not specified for saved_model. Using --tag serve
INFO:tensorflow:Saver not created because there are no variables in the graph to restore
2023-05-10 18:55:25,739 - INFO - Saver not created because there are no variables in the graph to restore
2023-05-10 18:55:26,926 - INFO - Fingerprint not found. Saved model loading will continue.
2023-05-10 18:55:26,927 - INFO - Signatures found in model: [serving_default].
2023-05-10 18:55:26,927 - WARNING - '--signature_def' not specified, using first signature: serving_default
Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/opt/homebrew/lib/python3.11/site-packages/tf2onnx/convert.py", line 710, in <module>
    main()
  File "/opt/homebrew/lib/python3.11/site-packages/tf2onnx/convert.py", line 242, in main
    graph_def, inputs, outputs, initialized_tables, tensors_to_rename = tf_loader.from_saved_model(
                                                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/lib/python3.11/site-packages/tf2onnx/tf_loader.py", line 611, in from_saved_model
    _from_saved_model_v2(model_path, input_names, output_names,
  File "/opt/homebrew/lib/python3.11/site-packages/tf2onnx/tf_loader.py", line 573, in _from_saved_model_v2
    graph_captures = concrete_func.graph._captures  # pylint: disable=protected-access
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'FuncGraph' object has no attribute '_captures'. Did you mean: 'captures'?

System information

  • OS Platform and Distribution (e.g., Linux Ubuntu 18.04*): MacOS 13.3.1 on Apple Silicon M1
  • TensorFlow Version: 2.13.0rc0
  • Python version: 3.11.3

To Reproduce
I'm following the instructions here: https://ankane.org/tensorflow-ruby - I downloaded this pre-trained model: https://storage.googleapis.com/download.tensorflow.org/models/object_detection/ssd_mobilenet_v1_coco_2018_01_28.tar.gz and trying to convert it to onnx format.

Unfortunately I am not able to install any other versions of tensorflow, only 2.13.0rc0 appears to be available:

$ pip3 install tensorflow==2.11.1
ERROR: Could not find a version that satisfies the requirement tensorflow==2.11.1 (from versions: 2.13.0rc0)
ERROR: No matching distribution found for tensorflow==2.11.1
@rgaufman rgaufman added the bug An unexpected problem or unintended behavior label May 10, 2023
@fatcat-z
Copy link
Collaborator

This looks like an issue of tensorflow.

Could you please lower down your python version to 3.9 so that you can install different versions of tensorflow for a retry?

@fatcat-z fatcat-z added the pending on user response Waiting for more information or validation from user label May 25, 2023
@rgaufman
Copy link
Author

We have a dependency on python 3.11 for a few other things, is support for this version of python and newer versions of TensorFlow something that's in the works?

@fatcat-z
Copy link
Collaborator

This is a compatibility issue between Python and TensorFlow 2.11.1, so tf2onnx can't help on it. Do you mind to try a newer TensorFlow version on Python 3.11?

@rgaufman
Copy link
Author

I believe 2.13.0rc0 is the latest? (it is also the only version selectable in pip3 install)

@fatcat-z
Copy link
Collaborator

I believe 2.13.0rc0 is the latest? (it is also the only version selectable in pip3 install)

Yes, it should be the latest rc version.

@rgaufman
Copy link
Author

That's the one I used above in the issue report. It's the only one that's available for python 3.11.

@guoqingbao
Copy link

I have the same problem; my Tensorflow version is 2.13.0 (Python 3.9).

@guoqingbao
Copy link

@rgaufman This problem can be fixed by replacing:

graph_captures = concrete_func.graph._captures

to

    if hasattr(concrete_func.graph, "captures"):
        graph_captures = concrete_func.graph.captures  
        captured_inputs = [t_name.name for t_val, t_name in graph_captures]
    else:
        graph_captures = concrete_func.graph._captures  
        captured_inputs = [t_name.name for t_val, t_name in graph_captures.values()]

@David-Leroye
Copy link

I got the same problem. It worked when I decreased the tensorflow version to 2.12.1

@carlos21
Copy link

@rgaufman were you able to find a solution?

@yan12125
Copy link
Contributor

yan12125 commented Aug 7, 2023

@guoqingbao Do you consider a pull request for your fix? I discovered this after posting another fix for the same issue at #2180 (comment), and your fix looks better than mine.

@guoqingbao
Copy link

@guoqingbao Do you consider a pull request for your fix? I discovered this after posting another fix for the same issue at #2180 (comment), and your fix looks better than mine.

Sure, I have created a pull request to fix this issue.

@tuannguyen90
Copy link

I got the same problem. It worked when I decreased the tensorflow version to 2.12.1

This worked for me.
For someone who is converting Transformers to ONNX with Hugging Face Optimum:

  • Tensorflow 2.12.1
  • Numpy: 1.23.0

@yan12125
Copy link
Contributor

yan12125 commented Aug 19, 2023

Awesome work at #2216 has been merged. The next tensorflow-onnx version should be compatible with tensorflow 2.13.

This issue can probably be closed?

EDIT: #2180 cannot be closed yet, as flatbuffers is still incompatible

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 pending on user response Waiting for more information or validation from user
Projects
None yet
Development

No branches or pull requests

7 participants