Keras簡介
Keras是一個高級神經網絡API,用Python編寫,能夠運行在TensorFlow或者Theano之上。它的開發重點是實現快速實驗。從想法到結果延遲很小,是做好研究的重要途徑。
如果您需要一個深度學習庫,請使用Keras,因為:
- 允許簡單快速的原型(通過用戶友好,模塊化和可擴展性)。
- 支持卷積神經網絡和循環神經網絡,以及兩者的組合。
- 在CPU和GPU上無縫運行。
Keras當前兼容於:Python 2.7-3.5
。
Keras設計原則
- 用戶友好 Keras是為人類而不是機器設計的API。它以用戶體驗為中心。 Keras遵循降低認知負擔的最佳實踐:它提供一致和簡單的API,它可以最大限度地減少常見用例所需的用戶操作數量,並根據用戶錯誤提供清晰可行的反饋。
- 模塊化 模塊化是指獨立的、完全可配置的模塊的序列或圖形,能夠以很少的限製組合到一起。特別地,神經層,損失函數,優化器,初始化方案,激活函數,正則化方案都是獨立的模塊,您可以結合來創建新的模型。
- 易擴展性 很容易添加新模塊(作為新類和函數),現有的模塊提供了很多示例。能夠輕鬆創建新模塊,使得Keras適合高級研究。
- 使用Python語言 不需要單獨的模型配置文件。模型使用Python代碼進行描述,它是緊湊的,易於調試的,並且易於擴展。
30秒入門Keras
Keras的核心數據結構是一個模型(model
),是組織層次的一種方式。最簡單的模型是序列(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的更深入的教程,您可以查看:
在代碼庫的示例文件夾中(examples folder),您會發現更高級的模型:使用記憶網絡的問答,使用堆疊LSTM的文本生成等等。
Keras安裝
Keras使用了如下依賴:
numpy
,scipy
yaml
HDF5
和h5py
(可選,如果您使用模型保存/加載功能)- 可選,但如果您使用CNN,建議使用:
cuDNN
- TensorFlow(使用
TensorFlow
作為後端) - Theano(使用
Theano
作為後端)
要安裝Keras,請cd
到Keras文件夾並運行install命令:
sudo python setup.py install
您還可以從PyPI安裝Keras:
sudo pip install keras
默認情況下,Keras將使用TensorFlow作為張量操縱庫。要切換到其他後端(Theano), 參考這裏。