在科研中,matlab对矩阵处理有优势,而python语言对神经网络热门框架,譬如TensorFlow、Pytorch等都支持,所以难免会有需要跨平台处理。本文主要分享一种简便的处理方法:在.mat格式的文件中写入读取数据,因为.mat格式matlab和python都支持。
一、读写matlab变量
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 import tensorflow as tfimport scipy.io as ioimport numpy as npInputData = 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()) io.savemat('PythonData.mat' ,{'X' :A, 'Y' :B})
1 2 3 4 5 load PythonData save MatlabData save MatlabData A B; save ('MatlabData.mat' , 'A' ,'B' );
二、张量的理解 2.1 初始化张量 1 2 3 4 5 6 random_float = tf.random.uniform(shape=()) zero_vector = tf.zeros(shape=(2)) A = tf.constant([[1., 2.], [3., 4.]])
2.2 输出张量特征 1 2 3 4 5 print (A.shape) print (A.dtype) print (A.numpy())
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
参考链接
简单粗暴TensorFlow2.0
TensorFlow2.0 tutorials
张量的数学运算