You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyTorch中Conv2d(groups=1)输入特征图的合并机制技术问询

PyTorch中groups=1的Conv2d输入通道合并方式解析

先明确你定义的卷积层参数:输入通道数2,输出通道数3,卷积核大小1×1,分组数groups=1,无偏置。

当groups=1时,每个输出通道对应一组形状为(输入通道数, 核高, 核宽)的卷积核,也就是这里每个输出通道会用到一个(2,1,1)的卷积核——每个输入通道都对应一个独立的权重参数。

你疑惑的合并方式,不是简单的输入特征图直接相加,而是加权求和:每个输入特征图先和对应的卷积核权重做逐元素乘法,再把所有输入通道的运算结果累加起来,得到该输出通道的特征图。

举个可验证的代码例子:

import torch
import torch.nn as nn

# 初始化你定义的卷积层
conv_layer = nn.Conv2d(2, 3, 1, groups=1, padding=0, bias=False)
# 卷积核权重形状为(3,2,1,1):3个输出通道,每个通道对应2个1×1权重
print(conv_layer.weight.shape)

# 构造测试输入:batch=1,2个通道,2×2的特征图
test_input = torch.randn(1, 2, 2, 2)
# 得到卷积输出
conv_output = conv_layer(test_input)

# 手动计算第一个输出通道的结果
w0 = conv_layer.weight[0, 0, 0, 0].item()  # 第一个输入通道对应的权重
w1 = conv_layer.weight[0, 1, 0, 0].item()  # 第二个输入通道对应的权重
manual_result = test_input[0,0,:,:] * w0 + test_input[0,1,:,:] * w1

# 对比手动计算和卷积层输出的结果
print(torch.allclose(conv_output[0,0,:,:], manual_result))  # 输出True,验证加权求和逻辑

简单来说,groups=1时,每个输出通道的生成逻辑是:对所有输入通道的特征图,分别用对应的卷积核权重加权后,再累加得到最终结果,每个输入通道的权重都是独立可学习的参数,而非固定的等权加法。

内容的提问来源于stack exchange,提问作者Marco Jakob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 18:05:05