1

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

我正在努力寻找可以训练的层的名称。在张量流模型中,有没有办法找到可训练的层的名称?有没有办法让这些名称有序,以便我可以选择最后几层进行训练?有没有办法从张量板上获取这些信息?

4

1 回答 1

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上找到相关答案

于 2018-04-13T12:52:24.107 回答