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!')
最终成功的将数组转置了过来,此方法适合多种维度。