Keras的核心數據結構是「模型」,模型是一種組織網絡層的方式。Keras中主要的模型是Sequential模型,Sequential是一系列網絡層按順序構成的棧。Sequential模型以下:git
from keras.models import Sequential model = Sequential()
將一些網絡層經過.add()堆疊起來,就構成了一個模型:github
from keras.layers.core import Dense, Activation model.add(Dense(output_dim=64, input_dim=100)) model.add(Activation("relu")) model.add(Dense(output_dim=10)) model.add(Activation("softmax"))
完成模型的搭建後,咱們須要使用.compile()方法來編譯模型:網絡
model.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])
編譯模型時必須指明損失函數和優化器,若是你須要的話,也能夠本身定製損失函數。Keras的一個核心理念就是使得事情在簡單的同時,保證用戶對他們但願作的事情有足夠的控制力度(最絕對的控制來自於源代碼的可擴展性)數據結構
from keras.optimizers import SGD model.compile(loss='categorical_crossentropy', optimizer=SGD(lr=0.01, momentum=0.9, nesterov=True))
完成模型編譯後,咱們在訓練數據上按batch進行必定次數的迭代訓練,以擬合網絡:框架
model.fit(X_train, Y_train, nb_epoch=5, batch_size=32)
固然,咱們也能夠手動將一批批的數據送入網絡中訓練,這時候須要使用:函數
model.train_on_batch(X_batch, Y_batch)
隨後,咱們能夠使用一行代碼對咱們的模型進行評估,看看模型的指標是否知足咱們的要求:學習
loss_and_metrics = 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)