首先我的任务是将一个训练好的torch模型与权重文件(.pth)转换为mindspore框架,并基于mindspore框架进行推理
但是我在将模型以及权重文件转换之后进行load时发现mindspore框架下的模型少load了很多参数,具体来说,就是我的torch框架下的模型有四百多个可以load的参数权重矩阵,但一模一样转为mindspore之后只有三百多个可load的参数矩阵,最后我将模型参数通过 params_dict = model.parameters_dict() 打印出来,如下:


发现我定义的num_layers=4的transformer_encoder只加载了一层,其他三层不见了!然后我将num_layers的值改为其他值,发现仍然只能加载一层,num_layers这个参数好像失效了
排除可能错误:
1、首先排除mindspore模型参数没有读完以及参数名有误的可能性,因为我将 param_not_load 打出来是空的[]

2、transformer的encoder_layers和self.transformer_encoder搭建正确,是按照文档的对照着改的(写法和torch没什么区别)
3、权重文件从torch转为mindspore的时候参数命名与修改没有问题,因为mindspore下所有参数都是成功加载的,只是莫名其妙少了三层的encoder_layer,也就是说权重文件.ckpt中的其他三层transformer_encoder参数权重空闲了,没有地方可以加载它们
请问这是什么问题?
首先我的任务是将一个训练好的torch模型与权重文件(.pth)转换为mindspore框架,并基于mindspore框架进行推理
但是我在将模型以及权重文件转换之后进行load时发现mindspore框架下的模型少load了很多参数,具体来说,就是我的torch框架下的模型有四百多个可以load的参数权重矩阵,但一模一样转为mindspore之后只有三百多个可load的参数矩阵,最后我将模型参数通过 params_dict = model.parameters_dict() 打印出来,如下:
发现我定义的num_layers=4的transformer_encoder只加载了一层,其他三层不见了!然后我将num_layers的值改为其他值,发现仍然只能加载一层,num_layers这个参数好像失效了
排除可能错误:
1、首先排除mindspore模型参数没有读完以及参数名有误的可能性,因为我将 param_not_load 打出来是空的[]

2、transformer的encoder_layers和self.transformer_encoder搭建正确,是按照文档的对照着改的(写法和torch没什么区别)
3、权重文件从torch转为mindspore的时候参数命名与修改没有问题,因为mindspore下所有参数都是成功加载的,只是莫名其妙少了三层的encoder_layer,也就是说权重文件.ckpt中的其他三层transformer_encoder参数权重空闲了,没有地方可以加载它们
请问这是什么问题?