问题描述:
想用mindspore来做一下目标检测,但是怎么转模型呢,求助有什么好的方法和教程?
就是.pt转成ckpt后,就是去测试模型推理,mindspore我看官网教程必须要有yaml文件,我这个.pt转后yaml文件该怎么搞?
解决方法:
mindspore的ckpt就是个字典,key是参数名,value就是保存了对应权重数据的一个tensor,转换过程就是把pt的key和value读取出来,然后把pt的value数据先转成numpy,再转成mindspore的tensor,和key对应放入到一个dict里面去,然后用mindspore的save_checkpoint保存成ckpt:
mindspore.save_checkpoint(dict_param, 'ms.ckpt')
可以参考下mindnlp里面的相关方法:
https://github.com/mindspore-lab/mindnlp/blob/fd3d7456a780d7a6530fa101435305423f3a68c3/mindnlp/core/serialization.py#L1242
ckpt就是个单独的文件,你有模型的话,就直接加载到模型里就可以了,模型的变量名和ckpt里面的key名称对得上,权重就会一一加载,你说的yaml文件,可能某些模型创建的时候是根据配置文件来创建的,所以用到了yaml,但ckpt本身和yaml没什么关系,就是个独立的存储权重键值对的文件。