1、keras中的训练集、验证集、测试集问题
在模型fit时,需要输入训练、验证和测试相关参数,需要注意以下tips: # validation_split表示将训练集中拿出一部分比例数据作为验证集,验证集不参与模型参数校正,仅作为验证训练是否会过拟合等。 # validation_data会使validation_split失效,有的代码中将测试集赋值给validation_data。 # 一般情况下,数据量大时,可以分三部分,指定validation_split将训练集中的一部分作为验证集,测试集作为独立一部分;当数据量不够时,只分两部分,即训练集与验证集,测试集与验证集设置为相同 # 训练结果的好坏是通过观察训练集和验证集的收敛情况决定。 # 使用validation_split时需要提前将数据打乱,因为fit中的打乱在validation_split之后,参考https://blog.youkuaiyun.com/xjcvip007/article/details/52801216与https://www.jianshu.com/p/0c7af5fbcf72。
2、mnist数据读取问题
# keras使用的load_data()函数读取的是亚马逊网站上的mnist.npz文件,读取之后直接返回训练集和测试集,训练过程中需要注意两点:(1)像素数据的scale:黑白像素的取值在0-255之间,因此数据需要除以255做0-1的scale;
(2)load_data读取的标签每个样本对应一个数值,需要做one-hot编码,比如mnist每条数据的标签转化成10维向量[0 0 0 0 0 0 1 0 0 0]样式。keras.utils.to_categorical(y_train, num_classes)可以实现这个编码。
# mnist官网上的数据是四个类似于train-images-idx3-ubyte.gz数据,分别存放训练和测试的图像数据和标签,tensorflow的mnist.py文件提供数据操作接口,通过mnist.py读取的数据已经做了scale处理和one-hot编码。