• Tensor数据类型


    Tensor数据类型

    • list: [1,1.2,'hello'] ,存储图片占用内存非常大
    • np.array,存成一个静态数组,但是numpy在深度学习之前就出现了,所以不适合深度学习
    • tf.Tensor,为了弥补numpy的缺点,更多的是为了深度学习而生
    • tensor:
      • scalar:标量,1.1
      • vector:向量,[1.1],[1.1,2.2,...]
      • matrix: 矩阵,[[1.1,2.2],[3.3,4.4]]
      • tensor:rank>2
    • 数据类型:
      • Int, float, double
      • bool
      • string
    • 定义tensor
    tf.constant(1)  # 定义常量,普通的tensor
    tf.constant(1.)  # 定义常量,普通的tensor
    tf.constant([True, False])  # 定义常量,普通的tensor
    tf.constant('hello nick')
    

    属性

    with tf.device('cpu'):
      a = tf.constant([1])
    with tf.device('gpu'):
    	b = tf.constant([1])
      
    a.device # 设备属性
    a.gpu()  # cpu转gpu
    a.numpy()  # 获取numpy数据类型
    a.shape  # 获取a的属性
    a.ndim  # 获取维度
    tf.rank(a)  # 获取维度
    a.name  # 1.+历史遗留问题
    

    数据类型判断

    instance(a,tf.Tensor) # 判断是否为tensor
    tf.is_tensor(a)  # 判断是否为tensor
    a.dtype,b.dtype,c.dtype  # 判断数据类型
    

    数据类型转换

    a = np.arange(5)
    aa = tf.convert_to_tensor(a,dtype=tf.int32) # numpy转tensor
    
    tf.cast(aa,dtype=tf.float32)  # tensor之间数据类型转换
    
    
    # int --》 bool
    b = tf.constant([0,1])
    tf.cast(b,dtype=tf.bool) # int --》bool
    
    # tf.Variable
    a = tf.range(5)
    b = tf.Variable(a) # tensor转为Variable后具有求导的特性,即自动记录a的梯度相关信息
    b.name # Variable:0
    
    b = tf.Variable(a, name='input_data')
    b.name # input_data:0
    b.trainable # True
    
    isinstance(b,tf.Tensor)  # False
    isinstance(b,tf.Variable)  # True
    tf.is_tensor(b)  # True  # 推荐使用
    

    tensor转numpy

    a= tf.range(5)
    a.numpy()
    
    # a必须是scalar
    a = tf.ones([])
    a.numpy()
    int(a)
    float(a)
    
  • 相关阅读:
    POJ
    FZU
    HDU
    HDU
    HDU
    HDU
    Educational Codeforces Round 84 E. Count The Blocks
    B Boundary(由弦求圆)
    D. Maximum Sum on Even Positions(翻转1次,求最大偶数位和)
    E. DeadLee(思维,拓扑图处理)
  • 原文地址:https://www.cnblogs.com/nickchen121/p/10840234.html
Copyright © 2020-2023  润新知