初学Keras,水平有限,不足的地方请大家指正,谢谢。
Keras是以模型为核心来组建神经网络的层次。Keras主要有两个模型Sequential和Graph。
Sequential以线性的方式搭建神经网络的各层,以下是Sequential层:
from keras.models import Sequentialmodel = Sequential()
model = Sequential()
可以通过.add()方法,方便的增加新的层级:
from keras.layers.core import Dense, Activation
model.add(Dense(output_dim=64, input_dim=100, init="glorot_uniform")) //输入输出维数
model.add(Activation("relu")) //激活函数
model.add(Dense(output_dim=10, init="glorot_uniform"))
model.add(Activation("softmax"))
当模型完成后,通过.compile()方法设置所采用的训练方法:
model.compile(loss='categorical_crossentropy', optimizer='sgd') //损失函数 和 优化方法
如果有需要的话,你也可以配置自己的优化器:
from keras.optimizers import SGD
model.compile(loss='categorical_crossentropy', optimizer=SGD(lr=0.01, momentum=0.9, nesterov=True))
现在可以按批次进行迭代训练了:
model.fit(X_train, Y_train, nb_epoch=5, batch_size=32)
也可以分别的输入batch:
model.train_on_batch(X_batch, Y_batch)
对网络的结果进行评价:
objective_score = model.evaluate(X_test, Y_test, batch_size=32)
或者在新的数据集上进行预测
classes = model.predict_classes(X_test, batch_size=32)
proba = model.predict_proba(X_test, batch_size=32)
构建LSTM网络、深度CNN等都是很方便快捷的。
具体实例请参考http://keras.io/examples/