ResNet
这里的残差结构有所不同的是,一种有虚线,由于要求主分支与短接的输出特征矩阵形状必须相同,于是这个虚线就是用1*1的卷积进行调整。
注意一下细节,18层,34层,50层,101层等残差网络大体结构相同,但前两种层数较少的网络conv2中,主分支与短接的输出特征矩阵维度相同,没有采用有虚线的,而后面多层的网络这里是用虚线的那种残差结构。
Batch Normalization是要在训练过程中不断地计算每个batch的均值和方差,batch size要设置的大一点,这样使用平均移动的方法记录统计的均值和方差,训练完就可以把所统计的均值和方差近似为整个训练集的。
ResNeXt
猫狗大战--经典图像分类题
先用VGG试了一下
运用迁移学习试了一下resnet18,以下都是固定了前面的权重,只训练最后全连接层的参数
优化器换成了SGD并用了学习率下降策略,准确率提升了一点
改用新学的resnext50_32x4d,又提升了一些最后用resnet101的网络结果,结果训练一会电脑超频重启了,于是用现在效果最好的resnext50_32x4d预测几个看看,我没用测试集中的,用了我手机相册拍的猫猫狗狗(真可爱♥)
最后进行test文件夹的所有预测,提交结果
本周的思考题:
1、Residual learning 的基本原理?
残差块主要的短接结构,实现了恒等映射,解决了网络的退化问题,解决了梯度消失、爆炸,使其添加更多层次的话,也不会比原来差。
2、Batch Normailization 的原理,思考 BN、LN、IN 的主要区别。
视频中所说, Batch Normalization使每一个batch的feature map满足均值为0,方差为1的分布规律,在训练过程中不断地计算每个batch的均值和方差,batch size设置的大一点,这样使用平均移动的方法记录统计的均值和方差,训练完就可以把所统计的均值和方差近似为整个训练集的。
区别:
LN是Layer Normalization,IN是Instance Normalization。BN是对一个batch内的所有数据计算均值和方差,适合于CNN,LN是针对单个样本,在通道方向上的,适合于RNN,IN是在图像像素上,用于图像的风格化迁移,只在 channel 内部求均值和标准差
3、为什么分组卷积可以提升准确率?即然分组卷积可以提升准确率,同时还能降低计算量,分数数量尽量多不行吗?
分组卷积使参数量变少了,提高了计算效率,从而加深网络层数来提高准确率。
分组数量太多,组与组数据之间的相关性被割裂,较小的分组可能会导致特征的丢失或信息损失。还是需要根据具体的问题合理安排网络分组卷积数。