Tensorflow學習筆記No.1
使用tf.keras.Sequential()建立網路模型
整個過程可分為五步:
1建立Sequential模型,2新增所需要的神經層,3使用.compile方法確定模型訓練結構,4使用.fit方法
使模型與訓練資料“擬合”,5.predict方法進行預測。
1.建立Sequential模型
匯入tensorflow模組,使用keras中的Sequential模型
import tensorflow as tf model = tf.keras.Sequential()
keras.Senquential()模型是一個順序堆疊模型,可以在模型中依次新增所需要的神經層
2.新增神經層
使用model.add()方法可以向建立好的模型中新增需要的神經層
首先是輸入層
1 model.add(tf.keras.layers.Flatten(input_shape = (28, 28)))#輸入的資料為 28*28的二維資料
Flatten是常用的輸入層,可以把輸入的多維資料展開成一維,便於輸入到神經網路中。
input_shape引數是以元組的形式輸入資料的維度。
然後是新增中間層,這裡只介紹簡單的幾種中間層。
Dense:全連線神經網路層。
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分類的分類器。
3.使用.compile()方法確定模型訓練流程
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模組中的字串名稱或可呼叫物件。
4.使用.fit()方法訓練模型
model.fit(train_image, train_label, epochs = 10,batch_size = 32, validation_data = (test_image, test_label) #顯示測試集在訓練中的測試情況 )
最開始的兩個引數是訓練資料和資料的標籤。
epochs是迭代次數,也就是 對這些資料反覆訓練的次數。
batch_size每次迭代輸入的資料數量。
validation_data監視迭代過程中在驗證集上達到的效果。
5.評估和預測
1 model.evaluate(test_image, test_label)
使用.evaluate()方法對測試集進行評估。
1 model.predict(test_image[0])
使用.predict()方法對資料進行預測,返回一個預測的結果。