Python-深度学习-学习笔记(14):keras对mat文件的加载与维度翻转问题的处理

Python-深度学习-学习笔记(14):keras对mat文件的加载与维度翻转问题的处理

keras对mat文件的加载

.mat文件即matlab软件生成的文件。
keras打开.mat有两种方式,一种是利用scipy库,另一种是利用h5py库。

1、scipy库打开mat文件

我们可以使用如下代码打开文件:

import scipy.io as scio
import numpy as np
data_path="DemonData.mat"
#读取mat\n"
data = scio.loadmat(data_path)

mat文件的位置要保存在当前使用的.ipynb文件的同一路径下。
在这里插入图片描述
大部分情况下这些数据是要进行数据处理和网络训练的,而导入的数据类型是字典型,所以我们需要将这些数据转换为array类型,包括标量\n,转换代码如下:

CLASS_NUM = data['classnum'][0][0]
SAMPLE_NUM = data['samplenum'][0][0]
X_data = data['X_data']
Y_data = data['Y_data']
del data
print('data has been imported!')

具体你得数据里面包括什么可以做出相应的更改,这里只是提供一个模板。

2、h5py库打开mat文件

如果mat文件大于2GB或者是文件的版本为-v7.3,我们需要采用如下代码打开:

import h5py
path = 'DemonData_LostInterference.mat'
data = h5py.File(path)

一般情况下如果出现错误:Please use HDF reader for matlab v7.3 files,请使用此方法打开!

读取mat文件张量发生转置

例如我设计的张量维度为(27,8400,2048)经过h5py读取以后变为(2048,8400,27)。

原因:matlab的.mat文件保存的时候,如果没有加-v7.3(save(‘data.mat’,’test’,’-v7.3’)),就不是h5py格式保存load之后的形状可能会转置。

解决方法:只要根据自己的需要添加np.transpose()函数即可,具体代码如下:

X_data = np.transpose(data['X_data'])
Y_data = np.transpose(data['Y_data'])
print(X_data.shape)
print(Y_data.shape)
del data
print('data has been imported!')

在这里插入图片描述
最终成功的将数组转置了过来,此方法适合多种维度。

发布了55 篇原创文章 · 获赞 76 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_42826337/article/details/89971642