小编Kri*_*tof的帖子

无法使用 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
查看次数

如何训练和微调完全无监督的深度神经网络?

在场景 1 中,我有一个多层稀疏自动编码器,它试图重现我的输入,因此我的所有层都与随机启动的权重一起训练。没有监督层,在我的数据上这没有学到任何相关信息(代码工作正常,经过验证,因为我已经在许多其他深度神经网络问题中使用了它)

在场景 2 中,我只是在类似于深度学习的贪婪逐层训练中训练多个自动编码器(但最终没有监督步骤),每一层都在前一个自动编码器的隐藏层的输出上。他们现在将分别学习一些模式(正如我从可视化权重中看到的),但并不像我从单层 AE 中所期望的那样出色。

所以我决定尝试现在连接到 1 个多层 AE 的预训练层是否可以比随机初始化版本表现更好。如您所见,这与深度神经网络中微调步骤的想法相同。

但是在我的微调过程中,所有层的神经元似乎都没有得到改进,而是迅速收敛到一个完全相同的模式,最终什么也没学到。

问题:训练完全无监督的多层重建神经网络的最佳配置是什么?首先分层,然后进行某种微调?为什么我的配置不起作用?

machine-learning neural-network unsupervised-learning autoencoder deep-learning

3
推荐指数
1
解决办法
2243
查看次数