【问题标题】:Tensorflow: Not restoring but only saving trainable variablesTensorflow:不恢复但只保存可训练变量
【发布时间】:2018-04-12 20:09:36
【问题描述】:

假设我有一个带有 Y 层的模型。

我正在尝试通过将 Y-1 层设置为 trainable=False 来恢复模型,因此我在定义 tf.train.Saver(var_list=list_of_Y-1_layers) 时将所有 Y-1 层(变量名)插入到 var_list 中,以便可以恢复它们。

我不想恢复我想训练自己的最后一层,所以如果我把它放在 var_list 它会被恢复,如果我不把它放在那里,它不会在训练期间保存在检查点内.

这个变量是否保存在其他地方?还是我在保存/恢复方面做错了什么?

旁注: 为了检查是否保存了可训练变量,我使用了函数inspect_checkpoint(),它在tensorflow/tensorflow/python/tools/inspect_checkpoint.py中定义

【问题讨论】:

  • 所以你的问题是你想在训练期间检查变量,但也避免在你不想的时候恢复它?一种选择是保存和恢复所有内容,但还有一个操作init_trainable = tf.variables_initializer(tf.trainable_variables()),您可以在恢复后运行。

标签: python tensorflow neural-network deep-learning


【解决方案1】:

您可以创建两个对象,一个用于保存,另一个用于恢复:

#used to restore:
saver_restore = tf.train.Saver(var_list=list_of_Y-1_layers)
#used to save, will save all variables
saver_save = tf.train.Saver()

【讨论】:

    【解决方案2】:

    您可以在不指定var_list 的情况下保存整个模型。这会将所有变量保存在检查点中。然后,当您恢复时,您可以为恢复 Saver 指定var_list,以仅恢复您想要的图层子集。

    来源:

    https://www.tensorflow.org/programmers_guide/saved_model#choosing_which_variables_to_save_and_restore

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-30
      • 2018-02-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多