如何在张量流模型中找到可训练层的名称?

时间:2017-09-24 18:36:57

标签: tensorflow conv-neural-network tensorboard tensorflow-slim

我正在尝试微调我tensorflow/slim resnet-v2-50模型中最后几层的数据集。

我正在努力寻找可以训练的图层的名称。在张量流模型中,是否有办法找到可以训练的图层的名称?有没有办法让这些名称成为有序的方式,以便我可以选择一些最后的图层培养?有没有办法从tensorboard获取这些信息?

1 个答案:

答案 0 :(得分:0)

输入

print(tf.trainable_variables())

这将打印所有可训练的变量。

当您只想训练或优化预训练网络的某些层时,您需要了解这一点。

TensorFlow的minimize方法采用可选参数var_list,这是一个通过反向传播调整的变量列表。

如果您未指定var_list,则优化程序可以调整图表中的任何TF变量。当您在var_list中指定一些变量时,TF会保持所有其他变量不变。

以下是jonbruner及其合作者使用的脚本示例。

tvars = tf.trainable_variables()
g_vars = [var for var in tvars if 'g_' in var.name]
g_trainer = tf.train.AdamOptimizer(0.0001).minimize(g_loss, var_list=g_vars)

这会找到之前定义的所有变量,它们具有" g _"在变量名中,将它们放入列表中,并在它们上运行ADAM优化器。

您可以在Quora

上找到相关答案