【TensorFlow2】读写matlab变量 & 张量操作

作者: Hennyxu | 来源:发表于2020-03-23 23:02 被阅读0次

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

    一、读写matlab变量

    • python中读写.mat数据文件
    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数据文件
    load PythonData
    
    save MatlabData            #保存全部变量
    save MatlabData A B;       #保存指定变量A、B
    save ('MatlabData.mat', 'A','B');
    

    二、张量的理解

    2.1 初始化张量
    # 定义一个随机数(标量)
    random_float = tf.random.uniform(shape=())
    # 定义一个有2个元素的零向量
    zero_vector = tf.zeros(shape=(2))
    # 定义两个2×2的常量矩阵
    A = tf.constant([[1., 2.], [3., 4.]])
    
    2.2 输出张量特征
    # 查看矩阵A的形状、类型和值
    print(A.shape)      # 输出(2, 2),即矩阵的长和宽均为2
    print(A.dtype)      # 输出<dtype: 'float32'>
    print(A.numpy())    # 输出[[1. 2.]
                        #      [3. 4.]]
    
    2.3 基本张量操作
    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. 张量的数学运算

    相关文章

      网友评论

        本文标题:【TensorFlow2】读写matlab变量 & 张量操作

        本文链接:https://www.haomeiwen.com/subject/gxbpictx.html