import numpy as np
import torch
import torch.nn.functional as F
def zero_pad(X, pad):
"""
对输入的矩阵进行零填充。
参数:
X:输入的矩阵,维度为 (m, n_C_prev, n_H_prev, n_W_prev)。
pad:填充量。
返回:
X_pad:已经零填充后的矩阵,维度为 (m, n_C_prev, n_H_prev + 2*pad, n_W_prev + 2*pad)。
"""
X_pad = np.pad(X, ((0, 0), (0, 0), (pad, pad), (pad, pad)), 'constant', constant_values=0)
return X_pad
def conv_2d(input, weight, bias, stride, padding):
"""
实现卷积层的前向传播。
参数:
input:来自上一层的激活值矩阵,维度为 (m, n_C_prev, n_H_prev, n_W_prev)。
weight:权重参数,维度为 (n_C, n_C_prev, f, f)。
bias:偏置参数,维度为 (n_C,)。
stride:步幅。
padding:填充量。
返回:
input1:卷积层的输出,维度为 (m, n_C, n_H, n_W)。
"""
(m, n_C_prev, n_H_prev, n_W