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

PyTorch Lightning构建CNN时线性层矩阵相乘报错求助

解决PyTorch Lightning中CNN线性层矩阵相乘错误

你的问题出在卷积池化层与线性层之间缺少张量展平操作:

卷积和MaxPool2d层输出的是4维张量(形状为(batch_size, channels, height, width)),但Linear层要求输入是2维张量((batch_size, total_features))。你直接在4维张量后接Linear层,导致Linear错误地将后三个维度当作特征的一部分,触发形状不匹配的RuntimeError。

解决方案

在最后一个MaxPool2d层之后添加nn.Flatten()层,将通道、高度、宽度维度展平为一维特征向量,再传入Linear层:

修改后的代码:

def __init__(self):    
    super().__init__()
    self.model = nn.Sequential(
        nn.Conv2d(3,6,4,padding=2),
        nn.ReLU(),
        nn.MaxPool2d(2),
        nn.Conv2d(6,10,4,padding=2),
        nn.ReLU(),
        nn.MaxPool2d(2),
        nn.Flatten(),  # 新增展平层,将4D张量转为2D
        nn.Linear(10*128*128,240),
        nn.ReLU(),
        nn.Linear(in_features=240, out_features=101),
        nn.ReLU()
    )

说明

nn.Flatten()默认从第1维开始展平(跳过batch维度,即索引为0的维度),会把(-1,10,128,128)转换为(-1, 10*128*128),正好匹配Linear层的输入特征数,矩阵相乘就能正常执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 12:24:21