如何使用 Python 和 TensorFlow 建立卷積基?


卷積神經網路通常由以下幾層組成:卷積層、池化層和密集層。

閱讀更多: 什麼是 TensorFlow,以及 Keras 如何與 TensorFlow 協作建立神經網路?

卷積神經網路已被用於解決特定型別的問題(例如影像識別),並取得了顯著成果。可以使用`models`類中的`Sequential`方法建立它。可以使用`add`方法將層新增到此卷積網路。

我們將使用 Keras Sequential API,它有助於構建順序模型,用於處理簡單的層堆疊,其中每一層只有一個輸入張量和一個輸出張量。

我們使用 Google Colaboratory 來執行以下程式碼。Google Colab 或 Colaboratory 幫助在瀏覽器上執行 Python 程式碼,無需任何配置,並可免費訪問 GPU(圖形處理單元)。Colaboratory 基於 Jupyter Notebook 構建。

print("Creating the convolutional base")
model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
print("Description of arhcitecture is")
model.summary()

程式碼來源:https://www.tensorflow.org/tutorials/images/cnn

輸出

Creating the convolutional base
Description of arhcitecture is
Model: "sequential"
_________________________________________________________________
Layer (type)                 Output Shape              Param #  
=================================================================
conv2d (Conv2D)              (None, 30, 30, 32)        896      
_________________________________________________________________
max_pooling2d (MaxPooling2D) (None, 15, 15, 32)        0        
_________________________________________________________________
conv2d_1 (Conv2D)            (None, 13, 13, 64)        18496    
_________________________________________________________________
max_pooling2d_1 (MaxPooling2 (None, 6, 6, 64)          0        
_________________________________________________________________
conv2d_2 (Conv2D)            (None, 4, 4, 64)          36928    
=================================================================
Total params: 56,320
Trainable params: 56,320
Non-trainable params: 0

解釋

  • 以上幾行程式碼使用一種常見模式定義了卷積基。

  • 此模式是 Conv2D 和 MaxPooling2D 層的堆疊。

  • 輸入是一個 CNN,它接受形狀為 (image_height, image_width, color_channels) 的張量。

  • CNN 配置為處理形狀為 (32, 32, 3) 的輸入,這是 CIFAR 影像的格式。

  • 這可以透過將 `input_shape` 引數傳遞給我們的第一層來實現。

  • 每個 Conv2D 和 MaxPooling2D 層的輸出都是形狀為 (height, width, channels) 的 3D 張量。

  • 隨著網路深度的增加,寬度和高度維度會縮小。

  • 每個 Conv2D 層的輸出通道數由第一個引數控制(例如,32 或 64)。

更新於:2021年2月20日

瀏覽量:111

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告