深度学习初探(四)TensorFlow 基础

TensorFlow 是一个面向于深度学习算法的科学计算库,内部数据保存在张量(Tensor)对 象上,所有的运算操作(Operation, OP)也都是基于张量对象进行。复杂的神经网络算法本质 上就是各种张量相乘、相加等基本运算操作的组合,在深入学习深度学习算法之前,熟练 掌握 TensorFlow 张量的基础操作方法十分重要。

TensorFlow 2 与 1.x

TensorFlow 2 是一个与 TensorFlow 1.x 使用体验完全不同的框架,TensorFlow 2 不兼容 TensorFlow 1.x 的代码,同时在编程风格、函数接口设计等上也大相径庭,TensorFlow 1.x 的代码需要依赖人工的方式迁移,自动化迁移方式并不靠谱。Google 即将停止支持 TensorFlow 1.x,不建议学习TensorFlow 1.x 版本。 TensorFlow 2 支持动态图优先模式,在计算时可以同时获得计算图与数值结果,可以代码中调试实时打印数据,搭建网络也像搭积木一样,层层堆叠,非常符合软件开发思维。这种先创建计算图后运行的编程方式叫做符号式编程
接下来我们使用 TensorFlow 2 来完成2.0 + 4.0运算:
import tensorflow as tf

1.创建输入张量 a = tf.constant(2.) b = tf.constant(4.)
2.直接计算并打印 print(‘a+b=’,a+b)

这种运算时同时创建计算图𝑎 + 𝑏和计算数值结果2.0 +4.0的方式叫做命令式编程
,也称为 动态图优先模式。TensorFlow 2 和 PyTorch 都是采用动态图(优先)模式开发,调试方便,所 见即所得。一般来说,动态图模型开发效率高,但是运行效率可能不如静态图模式,TensorFlow 2 也支持通过 tf.function 将动态图优先模式的代码转化为静态图模式,实现开发 和运行效率的双赢。

功能演示

TensorFlow 深度学习框架的 3 大核心功能,
a) 加速计算
神经网络本质上由大量的矩阵相乘,矩阵相加等基本数学运算构成,TensorFlow 的重要功能就是利用 GPU 方便地实现并行计算加速功能
在这里插入图片描述在这里插入图片描述

b) 自动梯度
在使用 TensorFlow 构建前向计算过程的时候,除了能够获得数值结果,TensorFlow 还 会自动构建计算图,通过TensorFlow 提供的自动求导的功能,可以不需要手动推导,即可计算出输出对网络的偏导数。
c) 常用神经网络接口
TensorFlow 除了提供底层的矩阵相乘,相加等运算函数,还内建了常用网络运算函数,常用网络层,网络训练,网络保存与加载,网络部署等一系列深度学习系统的便捷功 能。使用TensorFlow开发网络,可以方便地利用这些功能完成常用业务流程,高效稳定。

数据类型

首先我们来介绍 TensorFlow 中的基本数据类型,它包含了数值型、字符串型和布尔型

数值类型
数值类型的张量是TensorFlow 的主要数据载体,分为:
标量(Scalar) :单个的实数,如 1.2, 3.4 等,维度数(Dimension,也叫秩)为 0,shape 为[]
向量(Vector): n 个实数的有序集合,通过中括号包裹,如[1.2],[1.2,3.4]等,维度数为 1,长度不定,shape 为[𝑛]
矩阵(Matrix) n 行 m 列实数的有序集合,如[[1,2],[3,4]]也可以写成
在这里插入图片描述
维度数为 2,每个维度上的长度不定,shape 为[𝑛,𝑚]
张量(Tensor): 所有维度数dim > 2的数组统称为张量。张量的每个维度也做轴(Axis), 一般维度代表了具体的物理含义,比如 Shape 为[2,32,32,3]的张量共有 4 维,如果表 图片数据的话,每个维度/轴代表的含义分别是:图片数量、图片高度、图片宽度、 图片通道数,其中 2 代表了 2 张图片,32 代表了高宽均为 32,3 代表了 RGB 3 个通 道。张量的维度数以及每个维度所代表的具体物理含义需要由用户自行定义 在 TensorFlow 中间,为了表达方便,一般把标量、向量、矩阵也统称为张量,不作区分,需要根据张量的维度数和形状自行判断。

字符串类型

除了丰富的数值类型外,TensorFlow 还支持字符串(String)类型的数据,例如在表示图片数据时,可以先记录图片的路径,再通过预处理函数根据路径读取图片张量。通过传入字符串对象即可创建字符串类型的张量:深度学习算法主要还是以数值类型张量运算为主,字符串类型的数据使用频率较低,

布尔类型

为了方便表达比较运算操作的结果,TensorFlow 还支持布尔类型(Boolean, bool)的张 量。布尔类型的张量只需要传入 Python语言的布尔类型数据,转换成 TensorFlow 内部布尔型即可。需要注意的是,TensorFlow 的布尔类型和 Python语言的布尔类型并不对等,不能通用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值