52matlab技术网站,matlab教程,matlab安装教程,matlab下载

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 4789|回复: 0

python读取.mat文件保存为.npz用于深度学习

[复制链接]

123

主题

207

帖子

2992

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2992
发表于 2020-11-20 07:32:41 | 显示全部楼层 |阅读模式
本帖最后由 matlab的旋律 于 2020-11-20 07:33 编辑

对像我这种经常使用matlab和python交叉仿真的工程师,需要经常在matlab和python的数据格式进行切换,下面介绍一种读取读取.mat文件保存为.npz,用于tensorflow2.0以上版本深度学习模型的数据转换程序。第一步,首先导入库

  1. import numpy as np
  2. import scipy.io as sio
  3. import tensorflow as tf
  4. from sklearn.preprocessing import MinMaxScaler, Normalizer
复制代码
第二步,读取.mat文件并且转为tensorflow2.0以上版本深度学习模型的输入格式的子函数

  1. def load_matfile(filename, num_classes=2):
  2.     mat_contents = sio.loadmat(filename)#读取mat文件
  3.     tx_data = np.array(mat_contents['data'])

  4.     scaler = Normalizer()
  5.     scaler.fit(tx_data)
  6.     tx_data = scaler.transform(tx_data)  # 归一化

  7.     tx_data = tx_data.swapaxes(0, 1)#交换0 1轴
  8.     tx_data = np.expand_dims(tx_data, axis=1)#插入一个轴
  9.     tx_label = np.array(mat_contents['label'])
  10.     tx_label = np.squeeze(tx_label, 1)
  11.     tx_data = tx_data.swapaxes(1, 2)
  12.     index = np.arange(tx_label.shape[0])
  13.     np.random.shuffle(index)#随机打乱顺序
  14.     tx_data = tx_data[index, :, :]
  15.     tx_label = tx_label[index]
  16.     tx_label = tf.keras.utils.to_categorical(tx_label - 1, num_classes) #转换成类格式
  17.     return tx_data, tx_label
复制代码
第三步,保存为.npz格式
  1. if __name__ == "__main__":
  2.     num_classes = 2
  3.     tx_data, tx_label = load_matfile(r'xdata.mat', num_classes)

  4.     train_len = int(0.7 * len(tx_label))#训练集比例
  5.     x_train = tx_data[0:train_len, :, :]
  6.     y_train = tx_label[0:train_len]
  7.     x_test = tx_data[train_len:, :, :]#做测试值
  8.     y_test = tx_label[train_len:]

  9.     np.savez('data', x_train=x_train, y_train=y_train, x_test=x_test, y_test=y_test)#保存为.npz格式
复制代码
保存为data.npz文件,后续的处理就可以完全脱离matlab了

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|52matlab技术网站 ( 粤ICP备14005920号-5 )

GMT+8, 2024-3-29 16:14 , Processed in 0.073931 second(s), 20 queries .

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表