相关疑难解决方法(0)

无法使用 tensorflow 2.0.0 beta1 保存模型

我已经尝试了文档中描述的所有选项,但没有一个允许我在 tensorflow 2.0.0 beta1 中保存我的模型。我也尝试升级到(同样不稳定的)TF2-RC,但这甚至破坏了我在测试版中工作的代码,所以我现在很快回滚到测试版。

请参阅下面的最小复制代码。

我尝试过的:

  1. model.save("mymodel.h5") 
    
    Run Code Online (Sandbox Code Playgroud)

NotImplementedError:将模型保存为 HDF5 格式要求模型是功能模型或顺序模型。它不适用于子类模型,因为此类模型是通过 Python 方法的主体定义的,该方法不能安全地序列化。考虑保存为 Tensorflow SavedModel 格式(通过设置 save_format="tf")或使用save_weights.

  1. model.save("mymodel", format='tf')
    
    Run Code Online (Sandbox Code Playgroud)

ValueError: Model < main .CVAE object at 0x7f1cac2e7c50> 无法保存,因为尚未设置输入形状。通常,输入形状是通过调用 .fit() 或 .predict() 自动确定的。要手动设置形状,请调用 model._set_inputs(inputs)。

3.

model._set_input(input_sample)
model.save("mymodel", format='tf') 
Run Code Online (Sandbox Code Playgroud)

断言错误:tf.saved_model.save 在跟踪的@tf.function 中不受支持。将调用移动到外部急切执行的上下文。

这就是我现在卡住的地方,因为它没有给我任何合理的提示。那是因为我没有从@tf.function 调用 save() 函数,我已经从可能的最外层范围调用了它。事实上,我在下面这个最小的复制脚本中根本没有 @tf.function 并且仍然遇到相同的错误。

所以我真的不知道如何保存我的模型,我已经尝试了所有选项,但它们都抛出错误并且没有提供任何提示。

如果您设置 save_model=False,下面的最小复制示例工作正常,并且在 save_model=True 时它会重现错误。

在这个简化的自动编码器代码示例中似乎没有必要使用子类模型,但我在我需要的原始 VAE 代码中添加了许多自定义函数。

代码:

import tensorflow as tf

save_model = True

learning_rate = 1e-4
BATCH_SIZE = 100
TEST_BATCH_SIZE = 10
color_channels = 1
imsize = 28

(train_images, …
Run Code Online (Sandbox Code Playgroud)

model neural-network keras tensorflow

6
推荐指数
1
解决办法
4195
查看次数

标签 统计

keras ×1

model ×1

neural-network ×1

tensorflow ×1