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

时间:2017-01-25 16:30:37

标签: tensorflow tensorboard

我使用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中唯一显示的是图形本身。

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

enter image description here

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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