【深度学习】卷积前向传播实现

import numpy as np

def forward(input, filter, stride, pad):
    w, h, ci = input.shape
    k, k, _, co = filter.shape

    inputPadded = np.pad(input, ((pad, pad), (pad, pad), (0, 0)), 'constant')
    w_out = 1 + (w - k + 2 * pad) // 2
    h_out = 1 + (h - k + 2 * pad) // 2
    output = np.zeros((w_out, h_out, co))

    for i in range(w_out):
        for j in range(h_out):
            mask = inputPadded[i * stride:i * stride + k, j * stride:j * stride + k, :]
            for k in range(co):
                output[i, j, k] = np.sum(mask * filter[:, :, :, k])
    return output



你可能感兴趣的:(【深度学习】卷积前向传播实现)