TensorFlow2 读写matlab变量 & 张量操作

Cobaltyang Lv1

在科研中,matlab对矩阵处理有优势,而python语言对神经网络热门框架,譬如TensorFlow、Pytorch等都支持,所以难免会有需要跨平台处理。本文主要分享一种简便的处理方法:在.mat格式的文件中写入读取数据,因为.mat格式matlab和python都支持。

一、读写matlab变量

  • python中读写.mat数据文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import tensorflow as tf
import scipy.io as io
import numpy as np

# 将.mat文件读取为字典变量InputData
InputData = io.loadmat('MatlabData.mat')
# 从字典变量中读取变量
A = tf.constant(InputData['A'])
A = tf.cast(A, dtype = tf.float32)
B = tf.constant(InputData['B'])
......
A = np.mat(A.numpy())
B = np.mat(B.numpy())
# 将变量A保存为X,将变量B保存为Y,并写入到.mat文件
io.savemat('PythonData.mat',{'X':A, 'Y':B})
  • matlab中读写.mat数据文件
1
2
3
4
5
load PythonData

save MatlabData #保存全部变量
save MatlabData A B; #保存指定变量A、B
save ('MatlabData.mat', 'A','B');

二、张量的理解

2.1 初始化张量
1
2
3
4
5
6
# 定义一个随机数(标量)
random_float = tf.random.uniform(shape=())
# 定义一个有2个元素的零向量
zero_vector = tf.zeros(shape=(2))
# 定义两个2×2的常量矩阵
A = tf.constant([[1., 2.], [3., 4.]])
2.2 输出张量特征
1
2
3
4
5
# 查看矩阵A的形状、类型和值
print(A.shape) # 输出(2, 2),即矩阵的长和宽均为2
print(A.dtype) # 输出<dtype: 'float32'>
print(A.numpy()) # 输出[[1. 2.]
# [3. 4.]]
2.3 基本张量操作
1
2
3
4
5
6
7
8
9
10
C = tf.add(A, B)      # 计算矩阵A和B的和
D = tf.matmul(A, B) # 计算矩阵A和B的乘积
E = tf.mutiply(A, 1) # 计算矩阵A与1的数乘
tf.square(x) # 对张量x每个元素平方,并返回同维度张量
tf.log(x) # 对张量x每个元素求自然对数,同上

tf.reduce_sum(x) # 对所有元素求和,返回0维张量(标量)
# tf.reduce_sum(x,0) # 求列和(纵向求和)
# tf.reduce_sum(x,1) # 求行和(横向求和)
tf.reduce_mean() # 用法类似于tf.reduce_sum、tf.reduce_max
参考链接
  1. 简单粗暴TensorFlow2.0
  2. TensorFlow2.0 tutorials
  3. 张量的数学运算
  • Post title:TensorFlow2 读写matlab变量 & 张量操作
  • Post author:Cobaltyang
  • Create time:2023-02-28 21:18:20
  • Post link:cobaltyang.github.io/2023/02/28/matlab/
  • Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.
 Comments