import numpy as np
def conv_forward(input, filter, stride, pad):
n, c_in, h_in, w_in = input.shape
c_out, c_in, k1, k2 = filter.shape
inp_pad = np.pad(input, ((0, 0), (0, 0), (pad, pad), (pad, pad)), 'constant')
h_out = (h_in + 2 * pad - k1) / stride + 1
w_out = (w_in + 2 * pad - k2) / stride + 1
output = np.zeros((n, c_out, h_out, w_out))
for i in range(n):
for j in range(c_out):
for k in range(h_out):
for z in range(w_out):
output[i, j, k, z] = (inp_pad[i, :, k * stride: k * stride + k1, z * stride : z * stride + k2] * filter[i, :, :, :]).sum()
def pool_forward(input, kernel, stride, mode = 'max'):
n, c, h, w = input.shape
h_out = h // stride
w_out = w // stride
output = np.zeros((n, c, h_out, w_out))
for i in range(n):
for j in range(c):
for k in range(h_out):
for z in range(w_out):
if mode == 'max':
output[i, j, k, z] = (input[i, j, k * stride : k * stride + kernel, z * stride: z * stride + kernel]).max()
elif mode == 'avg':
output[i, j, k, z] = (input[i, j, k * stride: k * stride + kernel, z * stride: z * stride + kernel]).mean()
参考:
https://mp.weixin.qq.com/s/hzVC6r12SZ0qnFUgI51R6g
https://mp.weixin.qq.com/s/n41NGFxTFhw271ubBA_cMg
1万+

被折叠的 条评论
为什么被折叠?



