【问题标题】:How to find the names of the trainable layers in a tensorflow model?如何在张量流模型中找到可训练层的名称?
【发布时间】:2018-03-05 17:38:23
【问题描述】:

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

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

【问题讨论】:

  • 这应该可以工作 all_train_vars =tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES) 。这将显示设置为可训练的每一层的所有变量

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


【解决方案1】:

只需输入

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

【讨论】:

    猜你喜欢
    • 2016-06-14
    • 2023-03-12
    • 2021-06-28
    • 2018-12-12
    • 1970-01-01
    • 2016-05-12
    • 2018-12-03
    • 2017-09-22
    • 1970-01-01
    相关资源
    最近更新 更多