昨天和今天在写inference的code,分别建立了2个sub network,要把2个graph load进tf,所以开了2个session。
后来说要convert caffe的参数,我也早就想问为啥不直接convert,而要重头复现。
但是前面的一些工作也没白费,模型搭建还是必须的,因为现成的转换模型不能转换caffe中的scale layer。anyway,可能可以自己在转换的代码中加入这么一个层的逻辑,但是后来想直接提取caffe模型的参数可能会更靠谱一些,save为numpy格式不就可以直接load进tf了?只需要改一下tf模型中的variable scope,或者直接指定saver的var_list。对于scale layer中的参数,额外写个逻辑处理掉就好了,就是更改对应的variable name为取出的caffe模型参数即可。
更改一下tf.concat的顺序就可以正确的inference了。
总结:不懂算法流程或者具体细节,要先pycharm debug,有图的要在jupyter notebook中查看中间结果,一步步深入到某个变量的具体结构。
其实原理都是很简单,就是做的过程要思路保持清晰,遇到问题要会分析出出错的源头在哪里!
是报错就Google,变着法子搜;如果分析可能是模型或者数据上出错了,就在pycharm活着jupyter中一步步的查看中间结果
网友评论