今天跟着书上使用Keras做了一点简单的用法,Keras作为一个强大并且简单的深度学习算法库,只用一下其中 的神经网络算法库。
为解决B算法收敛速度慢、易陷入局部极小等缺陷,Hinton等人与2006年提出了非监督贪心逐层训练算法,为结局深层结构相关的优化难题带来了希望并以此为基础发展了脍炙人口的“深度学习”算法。由于使用了新的逐层训练算法,其模型训练比较快,下面是其中文文档。
http://keras-cn.readthedocs.io/en/latest/
其中以线性模型为例子
Sequential模型如下
from keras.models import Sequential
model = Sequential()
将一些网络层通过.add()
堆叠起来,就构成了一个模型:
from keras.layers.core import Dense, Activation
model.add(Dense(output_dim=10, input_dim=3)) 这个可以看作是做单层的构造,包括其输入dim,和输出的dim
这个是第一层输入层,即输入数据为3维,后面接的隐层节点
数为10
model.add(Activation("relu")) 设置该隐层的激活函数,Relu函数
model.add(Dense(input_dim=10, output_dim=1)) 添加隐层(10节点)到输出层(1节点)的 连接
model.add(Activation("softmax")) 输出层激活函数为softmax函数
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
编译模型,使adam方法求解,还有其他设置参数可以再去研究
model.fit(X_train, Y_train, nb_epoch=5, batch_size=1) 训练模型,nb_epoch为循环次数,Batch为小批的梯度
下降的size,这个阶段非常重要。
model.save_weight(filename) #保存模型
然后就可以使用该模型去做预测了,恩..这个是最简单的用法,说了,我是小白嘛~
具体更加高深的用法在慢慢研究吧,其中很多参数都要建立在对模型的充分理解之上。