【问题标题】:Error converting shape to a TensorShape when loading model in flask在烧瓶中加载模型时将形状转换为 TensorShape 时出错
【发布时间】:2021-05-18 02:06:09
【问题描述】:

我在本地机器上训练了一个 CNN 模型,使用 model.save('./models/my_model') 保存了模型,我能够加载模型 (new_model = tensorflow.keras.models.load_model('./models/my_model')) 并使用 Web 框架 Flask 对通过浏览器传递的图像进行分类。

现在,我想运行托管在 pythonanywhere.com 中的代码。但是,在加载模型时出现此错误:

ValueError:将形状转换为 TensorShape 时出错:int() 的无效文字,基数为 10:'class_name'。

我不知道是否与版本有关。首先我使用 python 3.8 和最新的 tensorflow 版本进行训练,但由于 Flask 不允许 3.8 中的所有必需库,我在 tensorflow 2.0.0 的烧瓶中使用了 3.7。所以我用 3.7 和 tf 2.0.0 在我的电脑上重新训练了模型,并上传了更新的模型文件。但是,同样的错误仍然存​​在。

--更新-- 我把日志错误放在这里

运行 WSGI 应用程序时出错 ValueError:将形状转换为 TensorShape 时出错:int() 的无效文字,基数为 10:'class_name'。

文件“/var/www/user_pythonanywhere_com_wsgi.py”,第 16 行,在 从主导入应用程序作为应用程序# noqa

文件“/home/user/mysite/main.py”,第 11 行,在 model = tensorflow.keras.models.load_model('/home/user/mysite/models/modelo')

文件“/usr/lib/python3.7/site-packages/tensorflow_core/python/keras/saving/save.py”,第 150 行,在 load_model return saved_model_load.load(filepath, compile)

文件“/usr/lib/python3.7/site-packages/tensorflow_core/python/keras/saving/saved_model/load.py”,第 86 行,加载中 model = tf_load.load_internal(path, loader_cls=KerasObjectLoader)

文件“/usr/lib/python3.7/site-packages/tensorflow_core/python/saved_model/load.py”,第 541 行,在 load_internal 出口目录)

文件“/usr/lib/python3.7/site-packages/tensorflow_core/python/keras/saving/saved_model/load.py”,第 103 行,在 init self._finalize()

文件“/usr/lib/python3.7/site-packages/tensorflow_core/python/keras/saving/saved_model/load.py”,第 127 行,在 _finalize node.add(层)

文件“/usr/lib/python3.7/site-packages/tensorflow_core/python/training/tracking/base.py”,第 457 行,在 _method_wrapper 结果 = 方法(自我,*args,**kwargs)

文件“/usr/lib/python3.7/site-packages/tensorflow_core/python/keras/engine/sequential.py”,第 174 行,添加 batch_shape=batch_shape, dtype=dtype, name=layer.name + '_input')

文件“/usr/lib/python3.7/site-packages/tensorflow_core/python/keras/engine/input_layer.py”,第 263 行,输入 input_tensor=张量)

init 中的文件“/usr/lib/python3.7/site-packages/tensorflow_core/python/keras/engine/input_layer.py”,第 125 行 衣衫褴褛=衣衫褴褛)

文件“/usr/lib/python3.7/site-packages/tensorflow_core/python/keras/backend.py”,第 1057 行,在占位符中 x = array_ops.placeholder(dtype, shape=shape, name=name)

文件“/usr/lib/python3.7/site-packages/tensorflow_core/python/ops/array_ops.py”,第 2630 行,在占位符中 return gen_array_ops.placeholder(dtype=dtype, shape=shape, name=name)

文件“/usr/lib/python3.7/site-packages/tensorflow_core/python/ops/gen_array_ops.py”,第 6669 行,在占位符中 shape = _execute.make_shape(shape, "shape")

文件“/usr/lib/python3.7/site-packages/tensorflow_core/python/eager/execute.py”,第 211 行,在 make_shape e))

错误来自一个tensorflow文件,我只是传递了保存模型的路径

【问题讨论】:

    标签: python tensorflow flask model pythonanywhere


    【解决方案1】:

    TensorFlow 目前无法在 PythonAnywhere 网络应用程序中运行。如果您使用的是 Keras,您可以尝试切换到已确认可以工作的 Theano 后端。上面还有一个简短的help page

    【讨论】:

      【解决方案2】:

      Python 在将您的 class_name 转换为 int 时出现问题。

      参考:ValueError: invalid literal for int() with base 10: ''

      【讨论】:

      • 错误来自一个tensorflow文件。我只是使用 tensorflow 函数来加载保存的模型(使用 tensorflow),该模型在我的本地机器上运行良好。链接中的建议是使用浮点数或正确读取文件,但是,我无法修改 tensorflow 库函数来这样做。
      猜你喜欢
      • 2023-03-15
      • 2019-02-27
      • 2019-04-08
      • 1970-01-01
      • 2021-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-18
      相关资源
      最近更新 更多