scale层报错

简单记录一下遇到的坑

用caffe训练网络的时候遇到了一个大坑,我原先训有一个模型A,然后增加A网络的中后段的通道数从而得到B网络,也就是说B有一半的结构跟A相同,网络层的名称完全相同。
我在训练B网络时,用A的权重对B网络进行初始化,结果一训就崩。。。错误提示为“scale_layer.cpp:123] Check failed: bottom[0]->shape(axis_ + i) == scale->shape(i) (256 vs. 96) dimension mismatch between bottom[0]->shape(1) and scale->shape(0)”,说Scale层数据尺寸对不上,后来定位到崩溃的是BN中的scale层
最终问题是,A、B网络中有相同名称、不同通道数的scale层,用A权重对B做初始化,会把A中后段的scale通道数赋值给B的scale,进而造成B网络前向运算时Scale和BatchNorm层的通道数不一致,无法正常运行。如果直接训练B网络,而不使用A权重对其初始化,则可以正常训练。
不过还有一个问题没有想明白,如果是上述原因,BatchNorm层也应该会报错,实际上却未见BatchNorm的报错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值