问题描述:
将ResNet18修改为ResNet101时报告以下错误
RuntimeError: Function AddmmBackward returned an invalid gradient at index 1 -got [64, 4096] but expected shape compatible with [64,17408]
原因:
看了网上的帖子,主要有两方面的原因。
1.由于反向传播时的device不一致问题。训练过程中,前向传播时我们需要模型、输入位于同一设备上(都在cuda或都在cpu),如果这时出了问题能够清晰的找到报错信息,一个类型是Tensor,一个是CUDATensor。
2.网络结构问题。需要检查前一个网络的输出与后一个网络的输入形状是否一致。
我的解决方案:
修改了网络全连接层,将原本ResNet18全连接层维度4096修改为ResNet101全连接层维度17408。


在尝试将ResNet18模型转换为ResNet101时遇到了RuntimeError,问题在于反向传播的设备不一致和网络结构的维度不匹配。解决方法包括确保所有计算在同一设备上进行,并调整全连接层的维度以匹配ResNet101的输出。通过修改全连接层的维度为17408,成功解决了问题。
1万+

被折叠的 条评论
为什么被折叠?



