整個過程可分爲五步:
1建立Sequential模型,2添加所須要的神經層,3使用.compile方法肯定模型訓練結構,4使用.fit方法網絡
使模型與訓練數據「擬合」,5.predict方法進行預測。函數
導入tensorflow模塊,使用keras中的Sequential模型學習
import tensorflow as tf model = tf.keras.Sequential()
keras.Senquential()模型是一個順序堆疊模型,能夠在模型中依次添加所須要的神經層測試
使用model.add()方法能夠向創建好的模型中添加須要的神經層優化
首先是輸入層lua
1 model.add(tf.keras.layers.Flatten(input_shape = (28, 28)))#輸入的數據爲 28*28的二維數據
Flatten是經常使用的輸入層,能夠把輸入的多維數據展開成一維,便於輸入到神經網絡中。spa
input_shape參數是以元組的形式輸入數據的維度。code
而後是添加中間層,這裏只介紹簡單的幾種中間層。對象
Dense:全鏈接神經網絡層。blog
Dropout:對於神經網絡單元,按照必定的機率將其暫時從網絡中丟棄。
1 model.add(tf.keras.layers.Dense(128, activation = "relu")) 2 model.add(tf.keras.layers.Dropout(0.5))
Dense中的第一個參數是隻隱藏單元的數量,隱藏單元越多,神經網絡就越複雜,activation參數是Dense層的激活函數。
Dropout是按照必定機率隨機丟棄一些隱藏單元,避免隱藏單元之間出現過強的依賴性形成過擬合,Dropout層能夠有效抑制過擬合,參數是隨機丟棄隱藏單元的機率。
最後是添加分類器。
分類器也是一箇中間層,激活函數選用某些用於分類的函數。
softmax就是一個經常使用的分類器。
1 model.add(keras.layers.Dense(10, activation='softmax'))
這裏添加了一個softmax分類器,第一個參數是分類的類別,這是一個10分類的分類器。
1 model.compile(optimizer = 'adam', #梯度降低 2 loss = 'sparse_categorical_crossentropy', #損失函數 3 metrics = ['acc'] #正確率 4 )
optimizer參數是選擇模型梯度降低的傳遞優化器實例,也能夠經過下面這種方式自定義優化器中的學習率。
1 optimizer = tf.keras.optimizers.Adam(learning_rate = 0.001)
loss參數是選擇計算模型偏差的損失函數,常見的有均方差‘mse’和'sparse_categorical_crossentropy'等。
metrics用於監視訓練,它們是 tf.keras.metrics模塊中的字符串名稱或可調用對象。
model.fit(train_image, train_label, epochs = 10,batch_size = 32, validation_data = (test_image, test_label) #顯示測試集在訓練中的測試狀況 )
最開始的兩個參數是訓練數據和數據的標籤。
epochs是迭代次數,也就是 對這些數據反覆訓練的次數。
batch_size每次迭代輸入的數據數量。
validation_data監視迭代過程當中在驗證集上達到的效果。
1 model.evaluate(test_image, test_label)
使用.evaluate()方法對測試集進行評估。
1 model.predict(test_image[0])
使用.predict()方法對數據進行預測,返回一個預測的結果。