用Python重写resnet配置文件.prototxt

写代码时的发现

小前言:理论跟实践相结合才是王道啊,阅读代码是有些理论不动,顺便查阅资料,然后根据自己的理解记录下来。
1.其中发现代码中Relu层和BatchNorm层,还有Scale使用了in_place = True操作,发现,只有当输入输出都是一样的情况下才可以这样操作。
参考博客caffe中的in-place操作

2.对resnet中加入的BatchNorm和Scale的理解
这是批量正则化,对一批数据的操作是,求均值,求方差,做归一化,进行平移和缩放。
其中BatchNorm是进行的归一化,Scale进行的是平移和缩放,均值和方差是数据累积计算出来的,后向传播链式法则求导得到的alpha and beta。caffe中的bn层和scale层
公式如下,
在这里插入图片描述写的很清晰啊。
作用:能够让我们敢大胆得增大学习率,提高优化效率。他减少了数据之间的差异性。caffe中常用层: BatchNorm层详解

3.对于卷积层参数的理解
这个看了许多遍了,老是忘,模棱两可可不行,得多看几遍最后肯定会记住的。
http://caffecn.cn/?/question/158
4.caffe 下一些参数的设置
这个博客写的很清晰,对我很有帮助,感谢了。其中,知道了,
moving_average_fraction, 代表训练是均值方差的更新速度。
caffe 下与loss相关的一些说明:
1 train loss 不断下降,test loss 不断下降,说明网络正在学习
2 train loss 不断下降,test loss 趋于不变,说明网络过拟合
3 train loss 趋于不变,test loss 趋于不变,说明学习遇到瓶颈,需要减小学习率或者批处理大小
4 train loss 趋于不变,test loss 不断下降,说明数据集100%有问题
5 train loss 不断上升,test loss 不断上升(最终变为NaN),可能是网络结构设计不当,训练超参数设置不当,程序bug等某个问题引起
6 train loss 不断上下跳动,可能引起的原因:学习率过大,或者批处理大小太小

真的是由一个问题又引出若干的问题啊。。。现在想知道批处理大小有啥影响啊?
噗。。。我又不知道epoch是啥东西了。感谢这个回答,非常清晰。
噗。。。epoches和iterations和batches,清楚了,现在又想理解一下前向传播和后向传播在一个神经网络中的过程了。明天再看看,我现在已经偏离了原来做的事情了。
5.遇到can’t assign this 什么玩意,原来是变量名的命名不能有 -这个字符。。。

something went wrong:

I0307 15:53:32.477352 57404 layer_factory.hpp:77] Creating layer conv1_relu
F0307 15:53:32.477376 57404 layer_factory.hpp:81] Check failed: registry.count(type) == 1 (0 vs. 1<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值