筆記 - 卷積網絡:卷積輸出張量shape計算

前置:

  • 影響shape形狀的因素:
    • 1.卷積核大小
    • 2.stride步長
    • 3.padding模式

公式:

在這裏插入圖片描述
在這裏插入圖片描述

  • K – 卷積核數量
  • F – 卷積核大小
  • S – 步長
  • P – 外圍填充的層數

在這裏插入圖片描述

運用

在這裏插入圖片描述

  • 顯然valid模式下,直接卷,不夠就丟棄
我推導的valid模式下的計算方式(以 W 舉例):
W2 = (W1 - F)/S + 1
  • SAME模式
    • 如何確定P
      • 利用公式1計算出output理論上的形狀,再利用公式2反推 P

        公式1
        在這裏插入圖片描述
        公式2
        在這裏插入圖片描述

        • 注意了這裏P可以不是整數哦,比如計算P=1.5的話也是正常的
          如果補充的padding個數爲偶數會在兩側補充相同個數個0,如果padding爲奇數2n+1,會在左側補n個0,右側補n+1個0
5×5的圖像
3×3的卷積核
步長 2
padding SAME

import tensorflow as tf
import numpy as np
pic = tf.constant(value=np.ones((5, 5), dtype=np.float32), shape=(1,5,5,1))
W = tf.constant(value=np.ones((3, 3), dtype=np.float32), shape=(3,3,1,1))
output = tf.nn.conv2d(pic, W, strides=[1, 2, 2, 1], padding='SAME')

with tf.Session() as sess:

    print(output.eval().shape)

"""
運行結果:
(1, 3, 3, 1)
"""

總結

  • 判斷輸出張量shape的形狀
    在這裏插入圖片描述

參考

深度學習基礎–卷積計算和池化計算公式
理解CNN卷積層與池化層計算
tensorflow中卷積方式SAME和VALID特徵圖大小計算

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章