首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >加载tf.keras模型中的问题

加载tf.keras模型中的问题
EN

Stack Overflow用户
提问于 2021-06-14 06:34:43
回答 2查看 2.8K关注 0票数 3

我刚开始接触tensorflow,对此一无所知。然而,在网络的帮助下,我能够训练出一个非常简单的模型。但是现在,每当我试图加载它时,我都会得到以下错误:

代码语言:javascript
复制
Traceback (most recent call last):
  File "C:/Users/Sabyasachi/PycharmProjects/AI_chatbot/actual_bot.py", line 21, in <module>
    n_model = keras.models.load_model('chatbot')
  File "C:\Users\Sabyasachi\PycharmProjects\AI_chatbot\venv\lib\site-packages\tensorflow\python\keras\saving\save.py", line 206, in load_model
    return saved_model_load.load(filepath, compile, options)
  File "C:\Users\Sabyasachi\PycharmProjects\AI_chatbot\venv\lib\site-packages\tensorflow\python\keras\saving\saved_model\load.py", line 152, in load
    loaded = tf_load.load_partial(path, nodes_to_load, options=options)
  File "C:\Users\Sabyasachi\PycharmProjects\AI_chatbot\venv\lib\site-packages\tensorflow\python\saved_model\load.py", line 775, in load_partial
    return load_internal(export_dir, tags, options, filters=filters)
  File "C:\Users\Sabyasachi\PycharmProjects\AI_chatbot\venv\lib\site-packages\tensorflow\python\saved_model\load.py", line 905, in load_internal
    loader = loader_cls(object_graph_proto, saved_model_proto, export_dir,
  File "C:\Users\Sabyasachi\PycharmProjects\AI_chatbot\venv\lib\site-packages\tensorflow\python\saved_model\load.py", line 162, in __init__
    self._load_all()
  File "C:\Users\Sabyasachi\PycharmProjects\AI_chatbot\venv\lib\site-packages\tensorflow\python\saved_model\load.py", line 258, in _load_all
    self._load_nodes()
  File "C:\Users\Sabyasachi\PycharmProjects\AI_chatbot\venv\lib\site-packages\tensorflow\python\saved_model\load.py", line 447, in _load_nodes
    slot_variable = optimizer_object.add_slot(
AttributeError: '_UserObject' object has no attribute 'add_slot'

我也尝试过colab,但是返回一个完全不同的错误:

代码语言:javascript
复制
/usr/local/lib/python3.7/dist-packages/tensorflow/python/saved_model/loader_impl.py in parse_saved_model(export_dir)
    114         "SavedModel file does not exist at: %s%s{%s|%s}" %
    115         (export_dir, os.path.sep, constants.SAVED_MODEL_FILENAME_PBTXT,
--> 116          constants.SAVED_MODEL_FILENAME_PB))
    117 
    118 

OSError: SavedModel file does not exist at: chat_model/{saved_model.pbtxt|saved_model.pb}

有人知道怎么解决这个问题吗?PS:我只是用model.save(不管是什么名字)来保存它,用keras.models.load_model(不管是什么名字)重新加载它。

编辑:我做了一些调查,并在colab中检查了这个页面-- https://colab.research.google.com/github/tensorflow/docs/blob/master/site/en/tutorials/keras/save_and_load.ipynb#scrollTo=uWwgNaz19TH2跟踪了他们的操作,并将模型的文件夹保存在另一个名为saved_model的文件夹中,然后在加载时调用了整个路径,现在它运行得很好。像这样保存它:

代码语言:javascript
复制
!mkdir -p saved_model
model.save('saved_model/chatbot')

加载是这样的:model = keras.models.load_model('saved_model/chatbot')

但是,它仍然不能在我的桌面上运行,只能在google Colab上运行。

EDIT2:在Pycharm中做了更多的挖掘,并解决了这个问题。显然,问题是我的进口是不正确的。我的main.py包含了创建和训练模型的代码,并且在我创建实际机器人的同一个目录中创建了actual_bot.py。

然而,我的进口在actual_bot.py中是不完整的。下载了所有与main.py相同的东西,以及所需的额外资源,现在它就像一种魅力。

EN

回答 2

Stack Overflow用户

发布于 2021-11-25 20:40:36

将tensorflow从2.6升级到2.7解决了这个问题。现在我可以将TF的模型保存为ONNX (使用opset 15)。

代码语言:javascript
复制
/opt/conda/lib/python3.9/runpy.py:127: 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
  warn(RuntimeWarning(msg))
2021-11-25 20:33:30,584 - WARNING - '--tag' not specified for saved_model. Using --tag serve
2021-11-25 20:33:42,054 - INFO - Signatures found in model: [serving_default].
2021-11-25 20:33:42,055 - WARNING - '--signature_def' not specified, using first signature: serving_default
2021-11-25 20:33:42,057 - INFO - Output names: ['activation_2']
WARNING:tensorflow:From /opt/conda/lib/python3.9/site-packages/tf2onnx/tf_loader.py:706: extract_sub_graph (from tensorflow.python.framework.graph_util_impl) is deprecated and will be removed in a future version.
Instructions for updating:
Use `tf.compat.v1.graph_util.extract_sub_graph`
2021-11-25 20:33:47,030 - WARNING - From /opt/conda/lib/python3.9/site-packages/tf2onnx/tf_loader.py:706: extract_sub_graph (from tensorflow.python.framework.graph_util_impl) is deprecated and will be removed in a future version.
Instructions for updating:
Use `tf.compat.v1.graph_util.extract_sub_graph`
2021-11-25 20:33:52,639 - INFO - Using tensorflow=2.7.0, onnx=1.10.2, tf2onnx=1.9.3/1190aa
2021-11-25 20:33:52,640 - INFO - Using opset <onnx, 15>
2021-11-25 20:34:00,768 - INFO - Computed 0 values for constant folding
2021-11-25 20:34:05,944 - INFO - Optimizing ONNX model
2021-11-25 20:34:31,232 - INFO - After optimization: Add -1 (6->5), BatchNormalization -4 (20->16), Cast -8 (10->2), Concat -5 (14->9), Const -100 (272->172), Gather +1 (0->1), Identity -6 (6->0), Reshape +2 (4->6), Shape -5 (6->1), Slice -5 (6->1), Squeeze -6 (6->0), Transpose -91 (124->33), Unsqueeze -24 (24->0)
2021-11-25 20:34:31,990 - INFO - 
2021-11-25 20:34:31,990 - INFO - Successfully converted TensorFlow model gen_saved_model to ONNX
2021-11-25 20:34:31,990 - INFO - Model inputs: ['input_2', 'input_3']
2021-11-25 20:34:31,991 - INFO - Model outputs: ['activation_2']
2021-11-25 20:34:31,991 - INFO - ONNX model is saved at gen.onnx
票数 1
EN

Stack Overflow用户

发布于 2021-12-10 20:10:27

我遇到了与tensorflow 2.7和2.6版本相同的错误。但是用tf 2.5版本解决了问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67965764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档