硬搬网络的问题
经典卷积网络的输入一般都是224*224,我们在使用迁移学习的时候,要考虑自己的图片大小,如果我们的图片太小,不能硬搬网络,需要自己利用经典的结构设计适合自己的网络。
总之要遵循这样一个原则:
最后一层特征图的大小一般是7*7左右,最大不会超过9*9,最小不能小于3*3。对于一个网络,最后一个卷积层的输出大小是最重要的。
为什么要进行归一化
特别需要注意的是:
在对图片数据归一化时,直接除以255.0就可以,在对其他数据归一化时,要先对训练集进行归一化,记录下平均值标准差等,然后利用训练集的这些特征对验证集与测试集归一化,切不可对训练集、验证集、测试集分别单独进行归一化,也不可以对所有数据归一化后再划分训练集和验证集,要先划分,再归一化。
sklearn中有相关API,如下:
1 | from sklearn.preprocessing import MinMaxScaler |
样本不均衡问题
如果原始数据各类别样本不均衡,解决方法一般有两个:
- 使用数据增强,是各类别样本均衡
- 设置损失权重,让网络更多的关注样本少的类
关于设置损失权重,如果使用keras框架,代码如下:
1 | # 利用sklearn计算权重 |