如何使用TensorFlow和預訓練模型從預訓練卷積神經網路建立基礎模型?
TensorFlow和預訓練模型可以藉助`tf.keras.applications`模組中的`MobileNetV2`方法,從預訓練的卷積神經網路建立基礎模型。它將權重和影像的輸入形狀作為引數。
閱讀更多: 什麼是TensorFlow以及Keras如何與TensorFlow一起建立神經網路?
包含至少一層卷積層的神經網路被稱為卷積神經網路。我們可以使用卷積神經網路來構建學習模型。
我們將瞭解如何利用來自預訓練網路的遷移學習對貓和狗的影像進行分類。影像分類遷移學習背後的直覺是,如果一個模型在大型通用資料集上進行訓練,則該模型可以有效地作為視覺世界的通用模型。它已經學習了特徵對映,這意味著使用者不必從頭開始,在一個大型資料集上訓練一個大型模型。
閱讀更多: 如何預訓練自定義模型?
我們使用Google Colaboratory執行以下程式碼。Google Colab或Colaboratory幫助在瀏覽器上執行Python程式碼,無需任何配置,並可免費訪問GPU(圖形處理單元)。Colaboratory構建在Jupyter Notebook之上。
示例
print("Creating base model from pre-trained MobileNet V2") IMG_SHAPE = IMG_SIZE + (3,) base_model = tf.keras.applications.MobileNetV2(input_shape=IMG_SHAPE, include_top=False, weights='imagenet')
程式碼來源 −https://www.tensorflow.org/tutorials/images/transfer_learning
輸出
Creating base model from pre-trained MobileNet V2 Downloading data from https://storage.googleapis.com/tensorflow/keras-applications/mobilenet_v2/mobilenet_v2_weights_tf_dim_ordering_tf_kernels_1.0_160_no_top.h5 9412608/9406464 [==============================] - 0s 0us/step
解釋
使用了基礎模型MobileNet V2。
它在ImageNet資料集上進行了預訓練,這是一個包含140萬張影像和1000個類別的大型資料集。
ImageNet是一個研究訓練資料集,包含許多類別,例如菠蘿蜜和注射器。
這套知識庫有助於從貓和狗的資料集中對貓和狗進行分類。
需要選擇用於特徵提取的MobileNet V2層。
最後一層分類層不太有用。
但我們依賴於展平操作之前的最後一層。
它被稱為“瓶頸層”。
與頂層相比,瓶頸層的特徵保留了更多的通用性。
例項化MobileNet V2模型。它預先載入了在ImageNet上訓練的權重。透過指定`include_top=False`,載入的網路不包括頂部的分類層。
這非常適合特徵提取。