2016-01-19 47 views
1

我已经构建并训练了一个模型。在第二阶段,我想替换最后两层,并使用不同的数据重新训练它们。 我不断得到错误的,即使我没有在新瓦尔运行初始化未初始化变量:在张量流中初始化新变量

var_init_op = tf.initialize_variables(var_list=[fc1_weights, fc1_biases, fc2_weights, fc2_biases]) sess.run(var_init_op)

我明白我必须初始化新的优化(ADAMSolever)为好,但 不知道如何要做到这一点。

假设我想在中间替换优化器(和其他变量),我如何初始化它而不用摧毁已经训练过的变量?

+0

嗨@dolbi,我有一个类似的问题,即使初始化后,它一直告诉我,它无法找到ckpt文件中的(新)变量。你找到解决方案吗? –

+0

@RogerTrullo,对不起我最终解决了这个问题.... – dolbi

回答

3

您可以使用tf.trainable_variables()获取所有可训练变量,并排除应该从预训练模型中恢复的变量。然后你可以初始化其他变量。

+0

这似乎很尴尬......我敢打赌,这样做有一个海峡前进的方式...... – dolbi

+0

initialize_variables只是一个快捷方式“init_op为GraphKeys中的每个变量.VARIABLES集合。“如果你想初始化这些变量的子集,你需要自己构造这个列表,就像Sherry所建议的那样 –