tensorflow `tf.keras.model.Model` - 子类化的模型无法序列化 `tf.function` 方法,

lzfw57am  于 4个月前  发布在  其他
关注(0)|答案(4)|浏览(143)

系统信息

  • 是否编写了自定义代码(与使用TensorFlow提供的库存示例脚本相反):是
  • OS平台和发行版(例如,Linux Ubuntu 16.04):Ubuntu 20.04
  • 移动设备(例如iPhone 8,Pixel 2,三星Galaxy)如果问题发生在移动设备上:未测试
  • 从哪里安装的TensorFlow(源或二进制文件):pip
  • TensorFlow版本(请使用以下命令):2.5.0-dev20201206
  • Python版本:3.7.7
  • Bazel版本(如果从源代码编译):n/a
  • GCC/编译器版本(如果从源代码编译):n/a
  • CUDA/cuDNN版本:11.0,8.0.4
  • GPU型号和内存:NVidia Quatro 5000
    描述当前行为

我有一个实现了自定义训练步骤(tf.keras.models.Model.train_step)的模型,所有工作都很好,直到序列化。我明白这是因为train_step是Python代码,需要将其保存为tf.function(图),为此应该包括一个input_signature。然而,以这种方式装饰并保存和重新加载模型似乎无法恢复自定义的train_step

描述预期行为

通过tf.function包括input_signature的方法应该与权重、优化器和损失一起序列化和加载。

独立代码重现此问题

Gist

ppcbkaq5

ppcbkaq51#

我能够复现报告中提到的问题,请找到 gist here

brgchamk

brgchamk2#

在 TensorFlow 2.5 和 TF-Nightly(2.6)中仍然存在这个问题。请查看这里的摘要。谢谢!

lpwwtiir

lpwwtiir3#

你好,
感谢你打开这个问题。由于这个问题已经开放了很长时间,这个问题的代码/调试信息可能与当前代码库的状态不相关。
Tensorflow团队正在不断通过修复错误和添加新功能来改进框架。我们建议你尝试使用最新的TensorFlow version 和最新的兼容硬件配置,这可能会解决该问题。如果你仍然遇到问题,请创建一个新的GitHub问题,附上你的最新发现以及所有有助于我们调查的调试信息。
请按照 release notes 了解Tensorflow空间中最新发展的动态。

jum4pzuy

jum4pzuy4#

这个问题已经过期,因为它已经开放了7天,没有活动。如果没有进一步的活动发生,它将被关闭。谢谢。

相关问题