2019-04-07 Pytorch:pkl转化成mat(待解

2019-04-07  本文已影响0人  whisper330

参考链接:
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训练网络试试。详见下一篇文章。

上一篇下一篇

猜你喜欢

热点阅读