CNN中参数计算公式

参数数量计算就是 kernel_size*kernel_size*kernel_numbers*input_channels

### 卷积神经网络 (CNN) 中卷积层的计算公式 卷积层的核心操作是对输入数据应用一组可学习的滤波器(即卷积核)。假设输入是一个三维张量 \(X\),其大小为 \((H_{in}, W_{in}, C_{in})\),其中 \(H_{in}\) 和 \(W_{in}\) 是输入的高度和宽度,\(C_{in}\) 表示通道数。对于每一个输出通道 \(k\),卷积运算可以表示如下: \[ Y(i, j, k) = b_k + \sum_{m=0}^{K_h-1} \sum_{n=0}^{K_w-1} \sum_{c=0}^{C_{in}-1} X(i+m, j+n, c) \cdot K(m, n, c, k) \] 这里, - \(Y(i,j,k)\) 表示第 \(i,j\) 位置处第 \(k\) 输出通道的结果[^1]; - \(b_k\) 是偏置项; - \(K(m,n,c,k)\) 是卷积核参数矩阵中的元素,对应于输入通道 \(c\) 的权重值; - \(K_h\) 和 \(K_w\) 分别代表卷积核的高度和宽度。 当考虑步幅 (\(S\)) 和填充 (\(P\)) 参数时,输出特征图的空间维度可以通过以下公式计算得出: 高度方向上的输出尺寸: \[ H_{out} = \left\lfloor \frac{H_{in} + 2P - K_h}{S} \right\rfloor + 1 \] 宽度方向上的输出尺寸: \[ W_{out} = \left\lfloor \frac{W_{in} + 2P - K_w}{S} \right\rfloor + 1 \] 这些公式描述了如何通过调整超参数来控制卷积层输出的形状[^2]。 ```python import numpy as np def convolve(input_data, kernel, bias, stride=(1, 1), padding='valid'): input_height, input_width, channels_in = input_data.shape kernel_height, kernel_width, _, filters_out = kernel.shape pad_top, pad_bottom, pad_left, pad_right = calculate_padding(padding, kernel_shape, stride) padded_input = np.pad( input_data, ((pad_top, pad_bottom), (pad_left, pad_right), (0, 0)), mode='constant', constant_values=0 ) output_height = int(((input_height + pad_top + pad_bottom - kernel_height) / stride[0]) + 1) output_width = int(((input_width + pad_left + pad_right - kernel_width) / stride[1]) + 1) result = np.zeros((output_height, output_width, filters_out)) for h in range(output_height): for w in range(output_width): for f in range(filters_out): vert_start = h * stride[0] vert_end = vert_start + kernel_height horiz_start = w * stride[1] horiz_end = horiz_start + kernel_width slice_matrix = padded_input[vert_start:vert_end, horiz_start:horiz_end, :] result[h, w, f] = np.sum(slice_matrix * kernel[:, :, :, f]) + bias[f] return result ``` 上述代码展示了实现二维卷积的一个简单例子,它基于前面提到的数学表达式构建而成[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值