MindSpore ResNet 模型训练:解决参数形状不匹配错误
MindSpore ResNet 模型训练:解决参数形状不匹配错误
在使用 MindSpore 训练 ResNet 模型时,可能会遇到以下错误:
Traceback (most recent call last):
File "D:\pythonProject7\main.py", line 151, in <module>
train_resnet()
File "D:\pythonProject7\main.py", line 141, in train_resnet
load_param_into_net(network, param_dict)
File "D:\miniconda3\envs\MindSpore\lib\site-packages\mindspore\train\serialization.py", line 555, in load_param_into_net
_update_param(param, new_param, strict_load)
File "D:\miniconda3\envs\MindSpore\lib\site-packages\mindspore\train\serialization.py", line 101, in _update_param
raise RuntimeError(msg)
RuntimeError: Net parameters fc.weight shape((100, 512)) different from parameter_dict's((10, 512))
Process finished with exit code 1
这个错误信息表明网络参数的形状不匹配,具体来说,网络中最后一层全连接层的输出大小是 100,但是在加载模型参数时,参数字典中对应的输出大小是 10,两者不一致,因此出现了错误。
解决方法
解决这个问题的关键在于修改网络中最后一层全连接层的输出大小为 10,与参数字典中的大小一致。具体来说,可以在 ResNet 类中修改如下代码:
self.fc = nn.Dense(512, num_classes)
修改为:
self.fc = nn.Dense(10, num_classes)
通过这种修改,网络参数的形状将与参数字典中的形状一致,从而解决参数不匹配的错误。
总结
在使用 MindSpore 训练模型时,需要注意网络参数的形状与加载参数字典中对应参数的形状是否一致,否则可能会导致参数不匹配的错误。及时检查并修改代码,可以有效避免此类错误的发生。
原文地址: https://www.cveoy.top/t/topic/jqA2 著作权归作者所有。请勿转载和采集!