Keras一知片解

来源:互联网 发布:centos 6.8 docker 编辑:程序博客网 时间:2024/06/05 02:53

在训练时,数据会被随机打乱吗?

如果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)

shuffle和validation_split的顺序

模型的fit函数有两个参数,shuffle用于将数据打乱,validation_split用于在没有提供验证集的时候,按一定比例从训练集中取出一部分作为验证集

这里有个陷阱是,程序是先执行validation_split,再执行shuffle的,所以会出现这种情况:

假如你的训练集是有序的,比方说正样本在前负样本在后,又设置了validation_split,那么你的验证集中很可能将全部是负样本

同样的,这个东西不会有任何错误报出来,因为Keras不可能知道你的数据有没有经过shuffle,保险起见如果你的数据是没shuffle过的,最好手动shuffle一下

利用h5py保存和读取keras模型的代码

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分类器)。

Source

Keras中文文档
ubuntu中利用h5py保存训练好的keras 神经网络模型
用Keras搭建, 编译和训练神经网络时,常见问题
深度学习中卷积和池化的一些总结
卷积神经网络_(1)卷积层和池化层学习