深度学习:Keras基础--序贯模型(sequential)
生活随笔
收集整理的這篇文章主要介紹了
深度学习:Keras基础--序贯模型(sequential)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
深度學習:Keras入門(一)之基礎篇
- ?1.Keras搭建神經網絡:
????? Keras有兩種類型的模型,序貫模型(Sequential)和函數式模型(Model),函數式模型應用更為廣泛,序貫模型是函數式模型的一種特殊情況。?
a)序貫模型(Sequential):單輸入單輸出,一條路通到底,層與層之間只有相鄰關系,沒有跨層連接。這種模型編譯速度快,操作也比較簡單
b)函數式模型(Model):多輸入多輸出,層與層之間任意連接。這種模型編譯速度慢。
- 2.代碼示例: from keras.models import Sequential
from keras.layers.core import Dense, Dropout, Activation
from keras.optimizers import SGD
from keras.datasets import mnist
import numpy
'''第一步:選擇模型
'''
model = Sequential()
'''第二步:構建網絡層
'''
model.add(Dense(500,input_shape=(784,))) # 輸入層,28*28=784
model.add(Activation('tanh')) # 激活函數是tanh
model.add(Dropout(0.5)) # 采用50%的dropoutmodel.add(Dense(500)) # 隱藏層節點500個
model.add(Activation('tanh'))
model.add(Dropout(0.5))model.add(Dense(10)) # 輸出結果是10個類別,所以維度是10
model.add(Activation('softmax')) # 最后一層用softmax作為激活函數'''第三步:編譯
'''
sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True) # 優化函數,設定學習率(lr)等參數
model.compile(loss='categorical_crossentropy', optimizer=sgd, class_mode='categorical') # 使用交叉熵作為loss函數'''第四步:訓練.fit的一些參數batch_size:對總的樣本數進行分組,每組包含的樣本數量epochs :訓練次數shuffle:是否把數據隨機打亂之后再進行訓練validation_split:拿出百分之多少用來做交叉驗證verbose:屏顯模式 0:不輸出 1:輸出進度 2:輸出每次的訓練結果
'''
(X_train, y_train), (X_test, y_test) = mnist.load_data() # 使用Keras自帶的mnist工具讀取數據(第一次需要聯網)
# 由于mist的輸入數據維度是(num, 28, 28),這里需要把后面的維度直接拼起來變成784維
X_train = X_train.reshape(X_train.shape[0], X_train.shape[1] * X_train.shape[2])
X_test = X_test.reshape(X_test.shape[0], X_test.shape[1] * X_test.shape[2])
Y_train = (numpy.arange(10) == y_train[:, None]).astype(int)
Y_test = (numpy.arange(10) == y_test[:, None]).astype(int)model.fit(X_train,Y_train,batch_size=200,epochs=50,shuffle=True,verbose=0,validation_split=0.3)
model.evaluate(X_test, Y_test, batch_size=200, verbose=0)'''第五步:輸出
'''
print("test set")
scores = model.evaluate(X_test,Y_test,batch_size=200,verbose=0)
print("")
print("The test loss is %f" % scores)
result = model.predict(X_test,batch_size=200,verbose=0)result_max = numpy.argmax(result, axis = 1)
test_max = numpy.argmax(Y_test, axis = 1)result_bool = numpy.equal(result_max, test_max)
true_num = numpy.sum(result_bool)
print("")
print("The accuracy of the model is %f" % (true_num/len(result_bool)))
?
總結
以上是生活随笔為你收集整理的深度学习:Keras基础--序贯模型(sequential)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习算法(十三):word2vec
- 下一篇: php户型图识别,2019如何教你看懂户