Tensorflow:如何从从 Caffe 导入的模型访问变量?

Tensorflow: How to access Variables from a model imported from Caffe?

我正在使用 tensorflow-deeplab-resnet model which transfers the Resnet model implemented in Caffe to tensorflow using caffe-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 中监控它们?
我是否可以仅通过查看图表(见图)来推断我想要监控的变量的正确名称?

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

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

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

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