keras是一个高级神经网络API,由python写成,能在TensorFlow或者Theano上运行。它关注快速实现、简单易用。具有以下优点:
*通过用户友好、模块化、可扩展实现简单和快速建立原形。
*支持卷积神经网络、循环神经网络以及两者的结合。
*在CPU和GPU上无缝运行。
keras支持python2.7-3.5
30秒学会keras
keras的核心数据结构是模型,一种组织层的方式。最简单的模型是序列(Sequential)模型,层的线性堆叠。对于更复杂的结构,应该使用Keras functional API,允许搭建任意图形的层。
Sequential模型如下:
from keras.models import Sequential
model = Sequential()
堆叠层只需 .add()
from keras.layers import Dense, Activation
model.add(Dense(units=64, input_dim=100))
model.add(Activation('relu'))
model.add(Dense(units=10))
model.add(Activation('softmax'))
一旦模型设计完毕,使用.compile()设置学习进程
model.compile(loss='categorical_crossentropy',
optimizer='sgd',
metrics=['accuracy'])
如果需要,可以进一步设置优化器。keras的核心原则是使事情尽可能简单,但也允许用户需要时掌控细节(可通过对源代码的简单扩展实现)
model.compile(loss=keras.losses.categorical_crossentropy,
optimizer=keras.optimizers.SGD(lr=0.01, momentum=0.9, nesterov=True))
现在可以批次方式在训练数据上迭代
# x_train and y_train are Numpy arrays --just like in the Scikit-Learn API.
model.fit(x_train, y_train, epochs=5, batch_size=32)
或者可以将批次手动传入模型
model.train_on_batch(x_batch, y_batch)
评估模型只需一行代码
loss_and_metrics = model.evaluate(x_test, y_test, batch_size=128)
或者在新数据上生成预测
classes = model.predict(x_test, batch_size=128)
使用上述过程可以快速搭建问题解答系统,图形分类模型,神经图灵机,或其他模型。
安装
keras需要以下依赖:
*numpy, scipy
*yaml
*HDF5和h5py(可选,如果使用模型保存/载入功能时必需)
*可选但推荐如果你使用CNN:cuDNN
*TensorFlow(如果使用TensorFlow作为后端)
*Theano(如果使用Theano作为后端)
安装keras,cd到keras文件夹,运行安装命令
sudo python setup.py install
也可以直接从PyPI安装
sudo pip install keras
后端转换
keras默认使用TensorFlow来处理tensor,如果需要转换使用Theano后端,找到$HOME/.keras/keras.json
,
{
"image_data_format": "channels_last",
"epsilon": 1e-07,
"floatx": "float32",
"backend": "tensorflow"
}
更改backend即可。
或者也可以定义环境变量KERAS_BACKEND
KERAS_BACKEND=tensorflow python -c "from keras import backend"
Using TensorFlow backend.
这将优先于第一种方法的设置。
关于后端的高级设置,将在今后专门介绍。