我正在尝试编写一个执行卷积的函数,我在尝试使用numpy创建输出卷时遇到了一些挑战。具体来说,我有一个输入图像,它表示为一个维度数组(150150,3)。现在,我想用一组kernels num\u kernels来卷积这个图像,它们是维(4,4,3)的数组,我希望这些kernels以2的步长在图像上移动。我的思考过程是:
(1)我将创建一个输出数组,该数组由从输入数组中取出(4,4,3)个大小的块组成,并将这些块扩展到行中,最后生成一个大的矩阵。你知道吗
(2)然后,我将创建一个由所有(4,4,3)内核组成的参数数组,这些内核将展开成行,这也将生成一个大的矩阵。你知道吗
(3)然后我可以将这些矩阵点积在一起,并将输出矩阵重塑为适当的维数。你知道吗
我的粗略psuedo代码开始数字(1)如下。你知道吗
def Convolution(input, filter_size, num_filters, stride):
X = input
output_Volume = np.zeros(#dimensions)
weights = np.zeros(#dimensions)
#get weights from other function
for width in range(0,150,2):
for height in range(0,150,2):
row = X(#indexes here to take out chunk).flatten
output_Volume.append(row) #something of this sort
return #dot product output volume and weights
如果有人能提供一个具体的代码示例,说明如何在Python中实现这一点(最有帮助的是对(1)和(2)的回答)(我使用的是numpy),那将不胜感激。谢谢您!你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐