
可能的原因:有可能是层数较少,可以尝试增加卷积层;可能性不大。之前我有出现过类似的情况,数据本身质量太低,就算训练层可以保证很高的准确率也没有什么意义,此时已经过拟合了。
这种情况是没有办法的,因为你的数据本身就有问题,无解。
你可以尝试用机器学习的方法提取特征值来验证,如果此时准确率比CNN结果要好,那么就是你网络本身的问题,如果准确率也很差,那就应该是你数据本身质量的问题。
当样本量发生变化,运算结果一定会发生变化,一般而言,样本量越大,那么运算结果越接近真实情况。
你目前的情况,意味着模型对实际情况预测的准确率本来就只有这么多,样本量小的时候给出的预测准确率并不是最接近真实的准确率。
一般而言,提升模型预测准确率的方法主要是增加或者更换变量,而不是通过扩大训练样本量提升准确率的。
cnn里面池化的作用:增大感受野。
所谓感受野,即一个像素对应回原图的区域大小,假如没有pooling,一个3*3,步长为1的卷积,那么输出的一个像素的感受野就是3*3的区域,再加一个stride=1的3*3卷积,则感受野为5*5。
假如我们在每一个卷积中间加上3*3的pooling呢?很明显感受野迅速增大,这就是pooling的一大用处。感受野的增加对于模型的能力的提升是必要的,正所谓“一叶障目则不见泰山也”。
正确率下降的原因:池化层往往跟在卷积层后面。通过平均池化或者最大池化的方法将之前卷基层得到的特征图做一个聚合统计。假设L层的卷积层得到的某一特征图有100*100这么大的尺寸。
选一个2*2的区域做不重叠的最大池化,池化层会输出50*50那么大的图,达到降低数据量的目的。采样层的作用可以等效为正则化,可以降低模型的耦合度,所以去掉的话准确率降低是正常的。
如果不加池化层应该保留原始数据,只影响模型训练速度是不影响性能的。总结如下:因为图像具有一种“静态性”的属性,这也就意味着在一个图像区域有用的特征极有可能在另一个区域同样适用。
例如,卷积层输出的特征图中两个相连的点的特征通常会很相似,假设a[0,0],a[0,1],a[1,0],a[1,1]都表示颜色特征是红色,没有必要都保留作下一层的输入。
池化层可以将这四个点做一个整合,输出红色这个特征。可以达到降低模型的规模,加速训练的目的。