天天看點

計算卷積神經網絡參數總數和輸出形狀

在本文中,我們将讨論卷積層中的兩個重要概念。

  • 如何計算參數的數量?
  • 産出的形狀是如何計算的?

術語

input_shape

Input_shape = (batch_size, height, width, depth)Batch_size =一次向前/向後傳遞的訓練資料數

output_shape

Output_shape = (batch_size, height, width, depth)

過濾器/核

在卷積神經網絡中,輸入資料與卷積核進行卷積,卷積核用于提取特征。卷積核是一個矩陣,它将移動到圖像像素資料(輸入)上,并将執行與輸入資料的特定區域的點積,輸出将是點積的矩陣。

計算卷積神經網絡參數總數和輸出形狀

計算卷積層中輸出的參數個數和形狀

示例1

輸入:

filter= 1

kernel_size = (3)

input_shape =(10、10、1)

讓我們計算Conv2D中的參數數量和輸出形狀。

計算卷積神經網絡參數總數和輸出形狀

如何計算卷積層中的參數個數?

權重:(3,3)= 3*3 =9的卷積核

偏置:1[每個卷積核将添加一個偏置。由于隻使用了一個卷積核,偏置=1*1]

一個大小為(3,3)的濾波器核的總參數= 9+1 =10

如何計算輸出形狀?

計算卷積神經網絡參數總數和輸出形狀

S→stride, p→padding, n→input size, f→filter size

預設Stride =1,沒有提到填充(是以,p=0)

輸出形狀= n-f+1 = 10-3 +1 =8

在使用卷積濾波器對輸入圖像應用卷積後,輸出将是一個特征映射。特征圖中的通道數量取決于所使用卷積核的數量。在這個示例中,隻使用了一個卷積核。是以,特征圖中的通道數為1。

是以,特征圖的Output_shape = (8,8,1)

model1=keras.models.Sequential()
 model1.add(Conv2D(filters=1,kernel_size=3,input_shape=(10,10,1),activation='relu'))
 model1.summary()           

複制

計算卷積神經網絡參數總數和輸出形狀

示例2

輸入:

  • filters = 5
  • kernel_size=(3,3)
  • input_shape=(10,10,1)
計算卷積神經網絡參數總數和輸出形狀

如何計算卷積層中的參數個數?

權重:(3,3)= 3 * 3 =9的卷積核

偏置:1

總參數= 9+1 =10

過濾器的總數= 5

卷積核的總參數= 10 * 5=50

如何計算輸出形狀?

n = 10, f = 3 s = 1, p = 0

預設Stride =1,沒有提到填充(是以,p=0)

輸出形狀= n-f+1 = 10-3 +1 =8

在使用卷積濾波器對輸入圖像應用卷積後,輸出将是一個特征映射。特征圖中的通道數量取決于所使用的過濾器的數量。在這個例子中,使用了5個過濾器。是以,特征圖中的通道數為5。

是以,特征圖的Output_shape = (8,8,5)

model2=keras.models.Sequential()
 model2.add(Conv2D(filters=5,kernel_size=3,input_shape=(10,10,1),activation='relu'))
 model2.summary()           

複制

計算卷積神經網絡參數總數和輸出形狀

示例3

輸入:

  • filter = 5
  • kernel_size = (3)
  • input_shape = (10 10 3)
計算卷積神經網絡參數總數和輸出形狀

如何計算卷積層中的參數個數?

權重:(3,3)= 3*3 =9的卷積核

卷積核将同時卷積所有三個通道(input_image depth=3)。是以一個卷積核的參數是3 * 3 * 3=27[卷積核大小 * 通道數]

偏置:1

[每個卷積核加一個偏置]

對于深度3,一個大小為(3,3)的卷積核的總參數=(3 * 3 * 3)+1=28

卷積核的總數= 5。

卷積核的總參數:5個大小為(3,3),input_image depth(3)= 28*5=140

如何計算輸出形狀?

n = 10, f = 3 s = 1, p = 0

預設Stride =1,沒有提到填充(是以,p=0)

輸出形狀= n-f+1 = 10-3 +1 =8

在使用卷積核對輸入圖像應用卷積後,輸出将是一個特征映射。特征圖中的通道數量取決于所使用的過濾器的數量。在這個例子中,使用了5個卷積核。是以,特征圖中的通道數為5。

是以,特征圖的Output_shape = (8,8,5)

model3=keras.models.Sequential()
 model3.add(Conv2D(filters=5,kernel_size=3,input_shape=(10,10,3),activation='relu'))
 model3.summary()           

複制

計算卷積神經網絡參數總數和輸出形狀

作者:Indhumathy Chelliah