TensorFlow2基础操作

文章目录

  • TensorFlow2基础操作
    • 数据类型
    • Tensor创建
    • Tensor索引和切片
    • Tensor维度变换
    • Broadcast
    • 数学运算
    • 补充说明

数据类型

  • 说明

    • 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解析。
  • 博客同步至我的个人博客网站,欢迎浏览其他文章。
  • 如有错误,欢迎指正。

TensorFlow2-基础操作相关推荐

  1. 深度学习(11)TensorFlow基础操作七: 向前传播(张量)实战

    深度学习(11)TensorFlow基础操作七: 向前传播(张量)实战 1. 导包 2. 加载数据集 3. 转换数据类型 4. 查看x.shape, y.shape, x.dtype, y.dtype ...

  2. 深度学习(10)TensorFlow基础操作六: 数学运算

    深度学习(10)TensorFlow基础操作六: 数学运算 1. Operation type 2. + - * / % // 3. tf.math.log & tf.exp 4. log2, ...

  3. 深度学习(9)TensorFlow基础操作五: Broadcasting

    深度学习(9)TensorFlow基础操作五: Broadcasting 1. 操作思想 2. 具体例子 3. 理解 (1) How to understand? (2) Why Broadcasti ...

  4. 深度学习(8)TensorFlow基础操作四: 维度变换

    深度学习(8)TensorFlow基础操作四: 维度变换 1. View 2. 示例 3. Reshape操作可能会导致潜在的bug 4. tf.transpose 5. Squeeze VS Exp ...

  5. 深度学习(6)TensorFlow基础操作二: 创建Tensor

    深度学习(6)TensorFlow基础操作二: 创建Tensor 一. 创建方式 1. From Numpy,List 2. zeros,ones (1) tf.zeros() (2) tf.zero ...

  6. 深度学习(5)TensorFlow基础操作一: TensorFlow数据类型

    深度学习(5)TensorFlow基础操作一: TensorFlow数据类型 Data Container(数据载体) What's Tensor TF is a computing lib(科学计算 ...

  7. 提交表单自动刷新_Web自动化测试:元素的基础操作和浏览器基础操作

    上一节,我们了解了如何定位元素,其实也有涉及对于元素的操作,这一节我们就详细的介绍一下对于元素的操作和对于浏览器的一些操作 一.对于元素的基础操作: clear():清除输入框内的文本 send_ke ...

  8. 【opencv】(1) 基础操作:图像视频读取、图像截取、颜色通道

    主要内容有:图像及视频的读取和保存.图像显示.转换灰度图.图像截取.颜色通道提取和组合 那我们开始吧. 1. 图像操作 首先我们导入opencv库,彩色图像一般都是由RGB(红绿蓝)三颜色通道构成,灰 ...

  9. JavaのFile类基础操作之问题

    在上一章节,介绍了File类的基础操作,比如文件的创建,文件的删除等等.这一章节,将介绍在File类基础操作中遇到的问题. 1.路径分割符问题 在实际的软件开发与运行过程中,往往都会在Windows环 ...

  10. 计算机应用基础统考操作,全国统考计算机应用基础操作题

    全国统考计算机应用基础操作题 (16页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.9 积分 .1.打开考生文件夹下的文件Word6.doc,完成 ...

最新文章

  1. OSI七层 TCP/IP四层 TCP/IP协议栈: 不同的通信协议的大集合
  2. 机器学习算法工程师的自我修养
  3. 断网python第三方库安装_断网环境下利用pip安装Python离线安装包(转载)
  4. 对 Entity 的初步构思
  5. P1368-工艺【最小表示法】
  6. 【C++深度剖析教程1】C++中的经典问题解析-c++中的对象的构造顺序与析构顺序
  7. 20个科学小知识,带你走进科学世界
  8. Windows 11 将使 AMD 芯片性能下降 15%!
  9. TouchSlide - 大话主席
  10. 复杂网络分析工具及其比较(转)
  11. 微机计算机原理及应用马义德,微型计算机原理及应用答案讲述.doc
  12. C与C++ 算法笔记中的代码
  13. 我的博客文章快速索引
  14. 李飞飞计算机视觉笔记(1)--数据驱动的图像分类方式:K最近邻与线性分类器
  15. 产品经理-自然资源行业4大产品线整理
  16. 解决xshell SSH 连接远程ubuntu make menuconfig 退格键无法删除问题
  17. SMAA算法详解 - SMAADepthEdgeDetectionPS
  18. dbv数据库乱码_使用DBV进行数据库版本控制
  19. ubuntu16 安装UR5e driver
  20. QT实战-计算器-刘桂林-专题视频课程

热门文章

  1. Dubbo集成Zookeeper的实现原理
  2. Java 类型和数据库类型怎么实现相互映射?
  3. 依赖注入_List_Set_Array类型的注入
  4. flume高可用-balance-测试运行
  5. Oracle之同义词,DBLINK,表空间
  6. 非对称加密算法 - Java加密与安全
  7. 简述中断处理的6个步骤_实用!处理电机振动的11个常用步骤
  8. 安装Xcode在Mac OS X10.7.3上
  9. build.xml引用其它文件的任务
  10. Linux不得不知道的目录和文件