如何设置torchsummary.summary的input_size参数?CNN网络维度不匹配报错求助
解决torchsummary输入尺寸不匹配的问题
错误原因分析
报错RuntimeError: mat1 and mat2 shapes cannot be multiplied (2x50176 and 6x128)的核心是CNN输出特征维度与后续Linear层输入维度不匹配:
- 当你传入
input_size=(1, 32, 32)时,经过两次Conv2d(无padding)和Flatten后,得到的特征维度是64*(32-4)*(32-4)=50176 - 但你的
CustomCNN.linear层第一个Linear的in_features=6,两者维度无法进行矩阵乘法,因此报错。
正确设置input_size的方法
根据你的网络结构,CustomCNN的linear层输入维度为6,说明该模型并非仅接收图像输入,而是图像特征+6维向量特征的组合输入,需按以下方式传入input_size:
import torchsummary torchsummary.summary(model=model.policy, input_size=[(1, 32, 32), (6,)])
其中:
(1, 32, 32)是图像输入的尺寸(通道数、高度、宽度)(6,)是额外的6维向量输入的尺寸
额外说明
如果你的模型确实只需要处理单图像输入,那说明CustomCNN.linear层的参数设置有误:
- 需根据输入图像尺寸,计算正确的
in_features值:公式为输出通道数*(输入高度-4)*(输入宽度-4)(两次3x3卷积无padding的情况下) - 比如输入
(1,32,32)时,in_features应设为64*28*28=50176,而非6
内容的提问来源于stack exchange,提问作者cwqaq
相关产品推荐
相关产品推荐

