【问题标题】:Tensorflow: How to access Variables from a model imported from Caffe?Tensorflow:如何从从 Caffe 导入的模型中访问变量?
【发布时间】:2017-01-25 16:30:37
【问题描述】:

我正在使用 tensorflow-deeplab-resnet model,它使用 caffe-tensorflow 将 Caffe 中实现的 Resnet 模型传输到 tensorflow。

我想知道如何访问从 Caffe 导入的模型中的各个变量,以便检查出了什么问题。

我试过了

allTrainVars = tf.trainable_variables()
for f in allTrainVars:
  print f.name

哪个输出

[...]
res5c_branch2c/weights:0
bn5c_branch2c/scale:0
bn5c_branch2c/offset:0
bn5c_branch2c/mean:0
bn5c_branch2c/variance:0
fc1_voc12_c0/weights:0
fc1_voc12_c0/biases:0
fc1_voc12_c1/weights:0
fc1_voc12_c1/biases:0
fc1_voc12_c2/weights:0
fc1_voc12_c2/biases:0
fc1_voc12_c3/weights:0
fc1_voc12_c3/biases:

fc1_voc12_c* 层是需要随机重新初始化的有趣层。但是当我尝试访问它们并像这样向变量添加日志记录时

var = [v for v in tf.trainable_variables() if v.name == "fc1_voc12_c0/weights:0"][0]
tf.summary.histogram("fc1_voc12_c0/weights_0", var)

我在 tensorboard 中看不到那个变量。 tensorboard 中唯一显示的是图形本身。

如何访问这些变量以便在 tensorboard 中监控它们?
我可以通过查看图表来推断出我想要监控的变量的正确名称吗(见图)?

编辑
我稍微编辑了我的问题的焦点,因为代码作者现在已经修复了一个错误。

【问题讨论】:

    标签: tensorflow tensorboard


    【解决方案1】:

    澄清我的理解:您正在尝试从旧版本恢复模型的某些部分,并随机初始化其余部分。

    如果是这样,您可以使用tf.contrib.framework.init_from_checkpoint 从旧检查点初始化模型主体。模型的其余部分(输出层)应根据您创建它的方式随机初始化。

    【讨论】:

    • 好吧,我并没有真正创建它,它是从 caffe 中内置的 deeplab-resnet 模型自动生成的。这就是为什么我不知道如何访问各个变量并强制执行随机初始化
    【解决方案2】:

    似乎它确实以问题中描述的方式工作。我只需要为我创建的每个新日志文件完全关闭 tensorboard 并重新启动 tensorboard。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多