TensorFlow2-基础操作

TensorFlow2基础操作

数据类型

  • 说明
    • TensorFlow其实并没有那么神秘,为了适应自动求导和GPU运算,它应运而生。为了契合numpy的核心数据类型ndarray,其最核心的数据类型为Tensor,中文指张量(一般,数学上分标量,一维向量,二维矩阵,二维以上称为张量,当然在TF2中上述各种都是使用Tensor类型)。而Variable是对Tensor的一个封装,使其Tensor具有自动求导的能力(即可以被优化,这个类型是专为神经网络参数设定的)。
  • Tensor
    • 数值类型
      • int, float, double
      • bool
      • string
      • 演示在这里插入图片描述
    • Variable
      • 创建及使用类似Tensor,只是多了trainable等属性。
      • 在这里插入图片描述

Tensor创建

  • from numpy or list
    • TF的Tensor可以直接从numpy的矩阵或者符合矩阵规则的Pythonlist中生成。
    • 演示在这里插入图片描述
  • 方法创建
    • tf.zeros
      • 接受参数为shape,创建全0的tensor。在这里插入图片描述
    • tf.zeros_like
      • 接受参数为tensor,创建根据该tensor的shape的全0的tensor。在这里插入图片描述
    • tf.ones
      • 类似tf.zeros
    • tf.ones_like
      • 类似tf.zeros_like
    • tf.random.normal
      • 接受参数为shape,mean,stddev,创建指定shape的tensor,数据从指定均值和标准差的正态分布中采样。在这里插入图片描述
    • tf.random.truncated_normal
      • 接受参数同上,创建指定shape的tensor,数据从指定均值和标准差的正态分布截断后采样。
    • tf.random.uniform
      • 接受参数为shape,minval,maxval,创建指定shape的tensor,数据从指定最小值到最大值之间的均匀分布中生成。在这里插入图片描述
    • tf.range
      • 接受参数为limit,创建一维的start到limit的tensor。在这里插入图片描述
    • tf.constant
      • 类似tf.convert_to_tensor。

Tensor索引和切片

  • C语言风格
    • 通过多层下标进行索引。在这里插入图片描述
  • numpy风格
    • 通过多层下标索引,写在一个中括号内,使用逗号分隔。在这里插入图片描述
  • Python风格
    • array[start:end:step, start:end:step, ...]可以缺省,start和end缺省时取从开端到结尾。同时,默认从第一个维度开始取,几个冒号则从开始取几个维度,后面的剩余维度全取。同样,上述省略号表示后面的维度都取,等同于不写的含义(但是,当省略号出现在中间则不能不写)。在这里插入图片描述
  • selective index
    • tf.gather(a, axis, indices)
    • axis表示指定的收集维度,indices表示该维度上收集那些序号。
    • tf.gather_nd(a, indices)
    • indices可以是多维的,按照指定维度索引。
    • tf.boolean_mask(a, mask, axis)
    • 按照布尔型的mask,对为True的对应取索引(支持多层维度)。
    • 演示。在这里插入图片描述

Tensor维度变换

  • tf.reshape(a, shape)
    • 将Tensor调整为新的合法shape,不会改变数据,只是改变数据的理解方式。(reshape中维度指定为-1表示自动推导,类似numpy)在这里插入图片描述
  • tf.transpose(a, perm)
    • 将原来Tensor按照perm指定的维度顺序进行转置。在这里插入图片描述
  • tf.expand_dims(a, axis)
    • 在指定维度的前面(axis为正数)或者后面(axis为负数)增加一个新的空维度。在这里插入图片描述
  • tf.squeeze(a, axis)
    • 消去指定的可以去掉的维度(该维度值为1)。在这里插入图片描述

Broadcast

  • 不同维度的Tensor进行相关运算时需要维度进行统一,broadcast一般是先增加空维度再沿着这个维度复制原数据(事实上存储上没有复制)。在TensorFlow中,broadcast运算时是自动进行的,当然,也可以调用tf.broadcast_to(a, target_shape)进行显式操作。
  • Broadcast使得编码相当简洁且节省内存空间。但是,当expand这一步无法进行时,broadcast就会失败,从而报错。
  • 在这里插入图片描述

数学运算

  • 元素运算
    • 基本的加减乘除,即矩阵对应位置的元素进行这四种数学运算。在这里插入图片描述
  • 矩阵运算
    • 矩阵之间的运算,符合矩阵的运算规则,主要是矩阵乘法。在这里插入图片描述
  • 维度运算
    • 某一个维度上的操作,reduce_mean、reduce_max等方法。在这里插入图片描述

补充说明

  • 本文主要讲解了TensorFlow2提供的一些基础操作的API解析。
  • 博客同步至我的个人博客网站,欢迎浏览其他文章。
  • 如有错误,欢迎指正。
发布了225 篇原创文章 · 获赞 109 · 访问量 13万+

猜你喜欢

转载自blog.csdn.net/zhouchen1998/article/details/101790283
今日推荐