正文共:3234 字 0 圖
預計閱讀時間: 9 分鐘
Keras 默認使用TensorFlow後端,使得神經網絡的搭建不會像TensorFlow複雜,所以在學會TensorFlow基本概念後,學習Keras能夠更快速的搭建自己的模型。
Keras 有 兩種使用方式:第一是Seuqential方式,第二種是函數式API。
最簡單的模型是 Sequential 順序模型,它由多個網絡層線性堆疊。對於更複雜的結構,你應該使用 Keras 函數式 API,它允許構建任意的神經網絡。
Sequential 使用方法
Sequential 模型如下所示:
from keras.models import Sequential
model = Sequential()
可以簡單地使用 .add() 來堆疊模型:
from keras.layers import Dense
model.add(Dense(units=64, activation='relu', input_dim=100))
model.add(Dense(units=10, 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))
現在,你可以批量地在訓練數據上進行迭代了:
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)
構建一個問答系統,一個圖像分類模型,一個神經圖靈機,或者其他的任何模型,就是這麼的快。
全部代碼集中如下:
from keras.models import Sequential
model = Sequential()
from keras.layers import Dense
model.add(Dense(units=64, activation='relu', input_dim=100))
model.add(Dense(units=10, activation='softmax'))
model.compile(loss='categorical_crossentropy',
optimizer='sgd',
metrics=['accuracy'])
model.fit(x_train, y_train, epochs=5, batch_size=32)
loss_and_metrics = model.evaluate(x_test, y_test, batch_size=128)
classes = model.predict(x_test, batch_size=128)
2.使用函數式API
通過代碼來領會函數式使用方法。
2.1搭建一個稠密連接網絡
from keras.layers import Input, Dense
from keras.models import Model
inputs = Input(shape=(784,))
x = Dense(64, activation='relu')(inputs)
x = Dense(64, activation='relu')(x)
predictions = Dense(10, activation='softmax')(x)
model = Model(inputs=inputs, outputs=predictions)
model.compile(optimizer='rmsprop',
loss='categorical_crossentropy',
metrics=['accuracy'])
model.fit(data, labels)
2.2搭建複雜的模型
inputs =Input(shape = input_shape,name= 'input')
conv1 = Conv2D(32,(3,3),name= 'conv1')(inputs)
relu1 = Activation('relu',name ='relu1')(conv1)
conv2 = Conv2D(32,(3,3),name ='conv2')(relu1)
relu2 = Activation('relu',name='relu2')(conv2)
pool2 = MaxPooling2D(pool_size=(2,2),padding ='same',name = 'pool2')(relu2)
conv3 = Conv2D(64,(3,3),name = 'conv3')(pool2)
relu3 = Activation('relu',name='relu3')(conv3)
pool3 = MaxPooling2D(pool_size=(2,2),padding='same',name ='pool3')(relu3)
x= Flatten()(pool3)
x =Dropout(0.25)(x)
x = [Dense(10,activation='softmax',name='fc%d'%(i))(x) for i in range(4) ]
outs = Concatenate()(x)
model =Model(inputs=inputs ,outputs=outs)
model.compile(optimizer=OPT,loss = LOSS,metrics=['accuracy'])
history = model.fit(X_train,
Y_train,
batch_size=BATCH_SIZE,
epochs=EPOCHS,
verbose=2,
validation_data=(X_test,Y_test)) #開始訓練
model.predict(X_test[9].reshape(1,60,160,1))
更多內容可以參考Keras中文文檔,閱讀原文直達連結!
推薦閱讀
下載|730頁 凸優化英文原版
下載|382頁 PYTHON自然語言處理
下載|498頁 Python基礎教程第3版
下載|1001頁 Python數據分析與數據化運營
下載|439頁 統計學習基礎-數據挖掘、推理預測
下載|271頁 漫畫線性代數
下載|322頁 Machine Learning for Hackers
下載|215頁 推薦系統實踐
BAT算法工程師(機器學習)面試100題(上)
GBDT+LR算法解析及Python實現
下載|Python刷題,你要的LeetCode答案都在這裡了!
下載|吳恩達deeplearning.ai深度學習教學視頻
10分鐘入門TensorFlow
10分鐘入門TensorFlow(2): 房價預測(Python代碼篇)
比Adam,SGD更優秀的AdaBound實驗對比代碼
GBDT+LR算法解析及Python實現
下載|經典《深度學習-花書》《機器學習-周志華》《統計學習方法-李航》《機器學習實戰》《利用Python進行數據分析》
CNN網絡架構演進:從LeNet到DenseNet
比Adam,SGD更優秀的AdaBound實驗對比代碼