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

RuntimeError:矩阵形状不匹配求助(64x64彩色图片适配教程模型)

解决PyTorch中mat1与mat2形状不匹配的RuntimeError

错误原因

你的输入是64x64的彩色图片,经过ToTensor()转换后,每个样本的张量形状为[3, 64, 64](3个颜色通道)。经过nn.Flatten()展平后,每个样本的特征数为3*64*64=12288,但模型第一个全连接层nn.Linear(64*64, 512)的输入维度仅设置为单通道的64*64=4096,导致矩阵乘法时维度不匹配。错误信息中的62是最后一批数据的样本数(总数据量无法被batch_size=64整除),属于正常现象。

两种解决方案

方案1:适配彩色图片的通道数(推荐)

直接修改模型第一个全连接层的输入维度为3*64*64=12288:

class NeuralNetwork(nn.Module):
    def __init__(self):
        super().__init__()
        self.flatten = nn.Flatten()
        self.linear_relu_stack = nn.Sequential(
            nn.Linear(3*64*64, 512),  # 修改此处为3*64*64
            nn.ReLU(),
            nn.Linear(512, 512),
            nn.ReLU(),
            nn.Linear(512, 10)
        )

    def forward(self, x):
        x = self.flatten(x)
        logits = self.linear_relu_stack(x)
        return logits

方案2:将彩色图转为灰度图处理

如果不需要彩色信息,可以在数据加载时添加Grayscale()转换,保持原模型结构不变:

from torchvision.transforms import Compose, Grayscale, ToTensor

# 修改dataset的transform参数
dataset = CustomImageDataset(
    "./Mr_Ai/dataset.csv", 
    "./Mr_Ai/dataset/", 
    transform=Compose([Grayscale(), ToTensor()])  # 新增灰度转换
)

验证修改

修改后重新运行代码,即可解决形状不匹配的问题。若后续仍有错误,可检查:

  • 数据集标注文件中的标签是否与模型最后一层输出维度(10)匹配
  • 图片路径是否正确,确保所有图片都能正常加载

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 17:27:52