keras —— 30秒搭建神经网络

时间:2022-03-03 13:54:43

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.
这将优先于第一种方法的设置。

关于后端的高级设置,将在今后专门介绍。