如何使用Tensorflow和預訓練模型用Python編譯模型?
Tensorflow和預訓練模型可以透過使用“compile”方法來編譯模型。在此之前,還會定義“base_learning_rate”。
閱讀更多: 什麼是TensorFlow以及Keras如何與TensorFlow一起建立神經網路?
包含至少一層卷積層的神經網路稱為卷積神經網路。我們可以使用卷積神經網路構建學習模型。
我們將瞭解如何藉助預訓練網路的遷移學習對貓和狗的影像進行分類。影像分類中遷移學習背後的直覺是,如果一個模型在大型通用資料集上進行訓練,則此模型可以有效地用作視覺世界的通用模型。它將學習特徵圖,這意味著使用者不必從頭開始在大型資料集上訓練大型模型。
閱讀更多: 如何預訓練自定義模型?
我們正在使用Google Colaboratory執行以下程式碼。Google Colab或Colaboratory幫助透過瀏覽器執行Python程式碼,並且無需任何配置即可免費訪問GPU(圖形處理單元)。Colaboratory構建在Jupyter Notebook之上。
print("The model is being compiled")
base_learning_rate = 0.0001
model.compile(optimizer=tf.keras.optimizers.Adam(lr=base_learning_rate),
loss=tf.keras.losses.BinaryCrossentropy(from_logits=True),
metrics=['accuracy'])
print("The base architecture of the model")
model.summary()程式碼來源 −https://www.tensorflow.org/tutorials/images/transfer_learning
輸出
The model is being compiled The base architecture of the model Model: "model" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= input_3 (InputLayer) [(None, 160, 160, 3)] 0 _________________________________________________________________ sequential_1 (Sequential) (None, 160, 160, 3) 0 _________________________________________________________________ tf.math.truediv (TFOpLambda) (None, 160, 160, 3) 0 _________________________________________________________________ tf.math.subtract (TFOpLambda (None, 160, 160, 3) 0 _________________________________________________________________ mobilenetv2_1.00_160 (Functi (None, 5, 5, 1280) 2257984 _________________________________________________________________ global_average_pooling2d_2 ( (None, 1280) 0 _________________________________________________________________ dropout (Dropout) (None, 1280) 0 _________________________________________________________________ dense_2 (Dense) (None, 1) 1281 ================================================================= Total params: 2,259,265 Trainable params: 1,281 Non-trainable params: 2,257,984
解釋
在訓練模型之前,需要先編譯模型。
由於有兩個類別,因此使用二元交叉熵損失,並使用from_logits=True,因為模型提供線性輸出。
MobileNet中的250萬個引數被凍結,但在密集層中包含1.2K個可訓練引數。
這些層在兩個tf.Variable物件(權重和偏差)之間分配。
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP