TensorFlow 2.0 学习笔记(一)—— 张量

张量

  • TensorFlow 是一个面向深度学习算法的科学计算库, 内部数据保存在张量 ( Tensor ) 对象上,所有的运算操作也都是基于张量对象进行的。在深入学习深度学习算法之前,熟练掌握 TensorFlow 张量的基础操作方法十分重要。

一. 数值类型

  • 数值类型的张量是 TensorFlow 的主要数据载体, 根据维度数来区分,可分为:
    • 标量(Scalar) :单个的实数,如 1, 2, 3, 4 等,维度为 0, shape 为 [] 。
    • 向量 (Vector) :n 个实数的有序几何,通过中括号包裹,如 [1.2] , [1.2, 3.4] 等,维度数为 1 ,长度不定,shape 为 [n] 。
    • 矩阵 (Martrix) :n 行 m 列实数的有序几何,如 [[1, 2], [3, 4]] , 也可以表示为:
      [ 1 2 3 4 ] \begin{bmatrix} 1 & 2 \\ 3 & 4 \\ \end{bmatrix} [1324]
      维度数为 w ,每个维度上的长度不定 ,shape 为 [n ,m].
    • 张量 (Tensor) :所有维度数 > 2 的数组统称为张量。比如 shape 为 [2, 32, 32, 3] 的张量共有 4 为,如果表示图片数据的话,每个维度分别代表 图片数量图片高度图片宽度 以及 图片的通道数。张量的维度数以及每个维度所代表的的具体物理函数需要由用户自行定义。
  • 在 TensorFlow 中间,为了表达方便,一般把标量、向量、矩阵也统称为张量,不作区分。

二. 创建张量以及获取张量属性

  • 我们首先来创建一些张量:
    import tensorflow as tf
    
    # 定义一个随机数 (标量)
    random_float = tf.random.uniform(shape=())
    
    # 定义一个有2个元素的零向量
    zero_vector = tf.zeros(shape=(2))
    
    # 定义两个2×2的常量矩阵
    A = tf.constant([[1., 2.], [3., 4.]])
    B = tf.constant([[5., 6.], [7., 8.]])
    
  • 他们的输出结果为:
    	<tf.Tensor: id=13, shape=(), dtype=float32, numpy=0.12395334>
    	
    	<tf.Tensor: id=22, shape=(2,), dtype=float32, numpy=array([0., 0.], dtype=float32)>
    	
    	<tf.Tensor: id=23, shape=(2, 2), dtype=float32, numpy=
    	array([[1., 2.],
    	       [3., 4.]], dtype=float32)>
    	  
    	<tf.Tensor: id=24, shape=(2, 2), dtype=float32, numpy=
    	array([[5., 6.],
    	       [7., 8.]], dtype=float32)
    
  • 其中 id 是 TensorFlow 中内部索引对象的编号, shape 表示张量的形状, dtype 表示张量的数值精度, 张量 numpy() 方法可以返回 Numpy.array 类型的数据,方便导出数据到系统的其他模块,代码如下:
    >>> B.numpy()
    array([[5., 6.],
           [7., 8.]], dtype=float32
    
  • 另外我们也可以通过 shape , dtype 属性获得张量的形状和数值精度
    >>> B.shape
    TensorShape([2, 2])
    >>> B.dtype
    tf.float32
    

三. 简单的张量操作

1. 矩阵相加

  • 首先我们使用 tensorflow 实现一个简单的矩阵相加:
    A = tf.constant([[1,2], [3, 4]])    # 创建矩阵 A 
    B = tf.constant([[5,6], [7, 8]])    # 创建矩阵 B
    
    C = tf.add(A,B)           # # 计算矩阵A和B的和
    
  • 运行结果为:
    <tf.Tensor: id=27, shape=(2, 2), dtype=int32, numpy=
    array([[ 6,  8],
           [10, 12]])>
    
  • 可见,我们成功使用 tf.add() 操作计算出:
    [ 1 2 3 4 ] + [ 5 6 7 8 ] = [ 6 8 10 12 ] \begin{bmatrix} 1 & 2 \\ 3 & 4 \\ \end{bmatrix} + \begin{bmatrix} 5 & 6 \\ 7 & 8 \\ \end{bmatrix} = \begin{bmatrix} 6 & 8 \\ 10 & 12 \\ \end{bmatrix} [1324]+[5768]=[610812]

2. 矩阵相乘

  • 在 tensorflow 里,使用 tf.matmul() 函数来实现矩阵相乘:
    >>> D = tf.matmul(A, B)
    <tf.Tensor: id=28, shape=(2, 2), dtype=int32, numpy=
    array([[19, 22],
           [43, 50]])>
    
  • tf.matmul() 操作计算为:
    [ 1 2 3 4 ] ⋅ [ 5 6 7 8 ] = [ 19 22 45 50 ] \begin{bmatrix} 1 & 2 \\ 3 & 4 \\ \end{bmatrix} \cdot \begin{bmatrix} 5 & 6 \\ 7 & 8 \\ \end{bmatrix} = \begin{bmatrix} 19 & 22 \\ 45 & 50 \\ \end{bmatrix} [1324][5768]=[19452250]

四. 结语

  • 本篇主要介绍了一些关于张量的概念,以及如何创建张量,操作张量计算等。
  • 本篇主要参考 《Tensorflow 深度学习》 以及 《简单粗暴 TensorFlow 2.0》 两书 。
  • 如果其中有不对的地方或是需要改进的地方,请指正。
  • 联系方式 email:lwl510ll@163.com 。
  • 本文到这就结束了,谢谢大家观看。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值