簡體   English   中英

手工制作的3D卷積神經網絡的形狀誤差

[英]Shape error with manually made 3D convolutional neural network

我有以下代碼用於在二維尺寸上進行卷積:

matrix = np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])
kernel = np.array([[1,-1],[1,-1]])

kr, kc = kernel.shape
mr, mc = matrix.shape

output = np.empty((mc-kc+1, mr-kr+1))

for row in range(mc-kc+1):
    for column in range(mr-kr+1):
        output[row][column] = (matrix[row:row+kr,column:column+kc]*kernel).sum()

print(output)

我想在真實的彩色圖像上嘗試一下,這就是我嘗試過的

#matrix is now 3D
print(matrix.shape)
Out: (340, 360, 3)

#kernel is now 3D
print(kernel.shape)
Out: (34, 36, 3)

kr, kc, kdim = kernel.shape
mr, mc, mdim = matrix.shape

output = np.empty((mc-kc+1, mr-kr+1, 3))

for row in range(mc-kc+1):
    for column in range(mr-kr+1):
        for dim in range(3):
            output[row][column][dim] = (matrix[row:row+kr,column:column+kc]*kernel).sum()

print(output)
Out: ValueError: operands could not be broadcast together with shapes (33,36,3) (34,36,3)

我認為深度尺寸有問題,但是我仍然看不到如何解決它。 救命?

您已經在output聲明和行與列循環中交換了行和列。 試試這個版本:

# note: [rows, columns, channel]
output = np.empty((mr - kr + 1, mc - kc + 1, 3))

# note: `row` loops over matrix rows, `column` - over columns
for row in range(mr - kr + 1):
  for column in range(mc - kc + 1):
    for dim in range(3):
      output[row][column][dim] = (matrix[row:row + kr, column:column + kc] * kernel).sum()

print(output)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM