如何使用 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)。