1. 程式人生 > 實用技巧 >Tensorflow學習筆記No.1

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()方法對資料進行預測,返回一個預測的結果。