多输入通道的2D卷积运算需要使用多少个kernel?
2D卷积层卷积核数量问题解答
首先直接给结论:你给出的场景中,生成32个输出通道总共需要32个独立卷积核,而非96个,具体运行逻辑如下:
- 每个输出通道对应1个独立的卷积核,该卷积核的通道数与输入特征图的通道数完全匹配:你这里输入是3通道RGB图像,所以每个3x3尺寸的卷积核本身也是3通道的,整体尺寸为
3x3x3 - 单输出通道的计算流程:对应3通道的卷积核会分别与输入的3个通道做2D卷积运算,得到3张256x256的单通道特征图,再将这3张特征图的对应位置数值相加,加上偏置项后传入激活函数,最终得到1个完整的输出通道
- 你示例中的32个输出通道,就对应32个独立的
3x3x3卷积核,整个卷积层不含偏置的可训练参数总数为32 * 3 * 3 * 3 = 864,如果包含偏置则额外增加32个参数。
你给出的Keras代码对应规则完全符合上述逻辑:
i = Input(shape=(256,256,3)) x = Conv2D(filters=32,kernel_size=(3,3),padding='same',activation='relu') (i)
常见误区说明:不要把单个卷积核的内部通道当成独立的卷积核,你提到的96其实是32个卷积核拆分到每个输入通道的子核总数量,这些子核绑定在同一个输出通道的卷积核下,不会独立生效,因此不算独立的卷积核。
内容的提问来源于stack exchange,提问作者Alec Ledoux
相关产品推荐
相关产品推荐

