import numpy as np
def convv(feature, conv, stride):
# (x+2p - kernel)//2 + 1
conv_l = conv.shape[0]
rows = feature.shape[0]
cols = rows
out_size = (rows - conv_l) // stride + 1
outcome = np.zeros((out_size,out_size))
i = j = 0
m = n =0
while i<rows:
n = 0
#for i in range(rows):
while j < cols:
#for j in range(cols):
if j+conv_l <= cols and i + conv_l <= rows:
print(feature[i:i+conv_l, j:j+conv_l].shape)
outcome[m][n] = np.sum(feature[i:i+conv_l, j:j+conv_l] * conv)
n += 1
j += stride
n = 0
j = 0
i += stride
m += 1
return outcome
feature = np.arange(81).reshape((9, 9))
conv = np.ones(9).reshape((3, 3))
stride = 3
a = convv(feature,conv,stride)
print(a)
附一张numpy的写法