我使用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中唯一显示的是图形本身。
如何访问这些变量以便在张量板中监控它们? 我可以通过查看图表来推断出我想要监控的变量的正确名称吗(参见图片)?
修改
我编辑了我的问题的焦点,因为现在代码的作者已经修复了一个错误。
答案 0 :(得分:0)
澄清我的理解:您正在尝试从旧版本恢复模型的某些部分,并随机初始化其余部分。
如果这是真的,您可以使用tf.contrib.framework.init_from_checkpoint
从旧检查点初始化模型的主体。模型的其余部分(输出层)应根据您创建它的方式随机初始化。
答案 1 :(得分:0)
它似乎正在按照问题中描述的方式进行工作。我只需要完全关闭tensorboard并为我创建的每个新日志文件重新启动tensorboard。