tensorflow模型转caffe模型需要注意的一些点

      许多深度学习算法落地阶段,tensorflow训练好的参数需要转换到caffe平台。

      我们采用了https://blog.csdn.net/pc9803/article/details/100055213中的半自动化方法,只是其中一些步骤进行了优化。可以肯定的是这种方法是完全可行的,我们的模型(有20多层)成功转换后,两个平台模型输出结果的L1 distance为1e-07级别,cos distance为1.00,也就是说tensorflow与caffe平台之间的精度误差很小,完全可以忽略。转换流程和上面博客的流程基本相似,这里就不再赘述了。

    本文的重点就是在实际转换过程中一些有用tips分享给大家:

  1. 非对称padding问题。在stride>1的卷积、反卷积操作中,如果需要填充的像素不对称,比如只需要填充一列或一行像素,那么tersorflow如果采用‘SAME’模式,就会优先填充右下,而caffe优先填充左上,这就会导致两个平台的运算结果差异很大。具体解决方法,就是tensorflow手工padding,可参考https://zhuanlan.zhihu.com/p/115081459?utm_source=wechat_session&utm_medium=social&utm_oi=751930042400903168。

  2. BN层的问题。(1)BN层在训练和测试阶段的计算方式不同,所以模型转换时两个平台切记要都是测试模式的模型。(2)另外一个非常关键的问题就是BN层中的eps默认值问题,tensorflow默认1e-03,而caffe默认1e-05。这个问题不引起注意,就会导致最后转换后模型的输出相似度很高,cos distance甚至超过0.9,很容易认为是平台误差导致的。

         

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值