如果model.fit中的参数suffle=True时,会随机打算每一次epoch的数据。(默认打乱)
但是验证数据默认不会打乱。
result = model.fit(data, label, batch_size=50,nb_epoch=35,shuffle=True,verbose=1,show_accuracy=True,validation_split=0.2)
模型的fit函数有两个参数,shuffle用于将数据打乱,validation_split用于在没有提供验证集的时候,按一定比例从训练集中取出一部分作为验证集
这里有个陷阱是,程序是先执行validation_split,再执行shuffle的,所以会出现这种情况:
假如你的训练集是有序的,比方说正样本在前负样本在后,又设置了validation_split,那么你的验证集中很可能将全部是负样本
同样的,这个东西不会有任何错误报出来,因为Keras不可能知道你的数据有没有经过shuffle,保险起见如果你的数据是没shuffle过的,最好手动shuffle一下
import h5py from keras.models import model_from_json
json_string = model.to_json()
open('my_model_architecture.json','w').write(json_string)
model.save_weights('my_model_weights.h5')
#读取model
model = model_from_json(open('my_model_architecture.json').read())
model.load_weights('my_model_weights.h5')
卷积神经网络(CNN)由输入层、卷积层、激活函数、池化层、全连接层组成,即INPUT-CONV-RELU-POOL-FC
(1)卷积层:用它来进行特征提取
(2)池化层:对输入的特征图进行压缩,一方面使特征图变小,简化网络计算复杂度;一方面进行特征压缩,提取主要特征
池化操作一般有两种,一种是Avy Pooling,一种是max Pooling
(3)全连接层:连接所有的特征,将输出值送给分类器(如softmax分类器)。
Keras中文文档
ubuntu中利用h5py保存训练好的keras 神经网络模型
用Keras搭建, 编译和训练神经网络时,常见问题
深度学习中卷积和池化的一些总结
卷积神经网络_(1)卷积层和池化层学习