参考链接:
1.pytorch 状态字典:state_dict
2.Convert .pkl format to .mat format
3.In matlab, how to read python pickle file?
4.How can i open dataset in matlab which is .pkl format?
思路与实践:
加载.pkl并将其转化为.mat,参考链接[2],代码如下
import os
import pickle
f=open('modelAlexNet_params.pkl','rb')
data = pickle.load(f)
import numpy, scipy.io
scipy.io.savemat('mydata.mat', mdict={'what':data})
显示如下:
image.png
转化错误:不能把int型的转化为array格式。打开变量浏览器,检查data的变量,如下:
image.png显示data是一行整型的数字,当然这是不对的,modelAlexNet_params.pkl好歹也有两百多M呢。应该是我打开的方式不对,但是不知道这种打开方式为什么不行(待解决)
再参考一中找到一种load方式
import torch
conv1_weight_state = torch.load(open('modelAlexNet_params.pkl','rb'))
print(conv1_weight_state)
显示如下(一部分):
部分结果
查看变量浏览器,显示是字典类型,这种打开方式才是正确的。
将其转化成mat文件
import numpy, scipy.io
scipy.io.savemat('mydata1.mat', mdict={'what':conv1_weight_state})
用matlab打开mydata1.mat,显示如下:
image.png
结构是对的,但是struct里面没有参数,打开方式又不对(哭泣)
明天来了再看看吧,回去洗澡澡咯
思考:
1.为什么导入有问题 (可能是pytorch和matlab存储数据的方式不太统一,就不匹配)
2.可不可以直接保存成mat文件 答:可以,但是保存后的mat文件在matlab中导入不进去
image.png
.......................................................................................................................................
上一周(周一到周三)在合作写一篇综述。
周四调了下程序没调出来。
周五去参加一个会议。
.......................................................................................................................................
2019.4.17 试了各种参考链接的方法,还是不行(如果大家有解决方法,麻烦告知我,感激不尽)。决定现实是用matlab自带的matconvnet训练网络试试。详见下一篇文章。
网友评论