相对于正常数据集,如果Batch_Size过小,训练数据就会非常难收敛,从而导致underfitting。
增大Batch_Size,相对处理速度加快。
增大Batch_Size,所需内存容量增加(epoch的次数需要增加以达到最好结果)。
当epoch增加以后同样也会导致耗时增加从而速度下降。因此我们需要寻找最好的batch_size。
Batch_Size 增大到一定程度,其确定的下降方向已经基本不再变化;
再次重申:batchsize 的正确选择是为了在内存效率和内存容量之间寻找最佳平衡。
来自:https://blog.csdn.net/zc199329/article/details/80907391
池化存在的问题
先引Hinton对池化操作的评价:
The pooling operation used in convolutional neural networks is a big mistake and the fact that it works so well is a disaster. (Geoffrey Hinton, Reddit AMA)
池化层在接收复杂输入的基础上,将复杂输入分成若干cell,提取成简单的cell,目标简单的旋转或平移,经过几层的池化提取的信息就比较相似了,通过不断简化输入聚合像素值,模型内部重复的池化操作,可让模型对目标有内在不变性:
关于池化层存在的问题,在前面的blog里面已经讲了很多遍。池化操作是破坏性的,丢弃了75%的输入信息,虽然模型增加了健壮性但也丢弃了细节信息。
除了这一问题,池化层受限于自身架构上的限制,只能获取局部信息和固定的变换结构,这只有很小的感受野,通过不断加深网络层次,获得更大的感受野。我们不能随意的调整池化层的大小,因为这会急剧的降低特征映射的空间分辨率。
————————————————
原文链接:https://blog.csdn.net/u011974639/article/details/79681455
ResNet这里它Follow了之前VGG/ResNet等网络中的一贯做法:一是如果一个block输出同样大小的chnnel size,那么blocks输入、输出有着相同的hyper-parameters(即width和filter sizes);二是若其输出与输入有着不同的大小(如downsampling操作),那么就需要相应地扩大filters的数目。