TensorFlow深度学习(2)

2、TensorFlow基础

TensorFlow 是一个面向深度学习算法的科学计算库,内部数据保存在张量(Tensor)对象上,所有的运算操作(Operation,简称 OP)也都是基于张量对象进行的。

2.1数据类型

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

2.1.1数值类型

标量(Scalar)。单个的实数,如 1.2, 3.4 等,维度(Dimension)数为 0,shape 为[]。
向量(Vector)。个实数的有序集合,通过中括号包裹,如[1.2],[1.2,3.4]等,维度数 为 1,长度不定,shape 为[]。
矩阵(Matrix)。行列实数的有序集合,如[[1,2],[3,4]]。
张量(Tensor)。所有维度数dim > 2的数组统称为张量。
在 TensorFlow 中间,为了表达方便,一般把标量、向量、矩阵也统称为张量。
在这里插入图片描述
TensorFlow深度学习(2)_第1张图片
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
TensorFlow深度学习(2)_第2张图片
在这里插入图片描述
在 tf.strings 模块中,提供了常见的字符串类型的工具函数,如小写化 lower()、 拼接 join()、 长度 length()、 切分 split()等。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
TensorFlow深度学习(2)_第3张图片

2.1.2数值精度

TensorFlow深度学习(2)_第4张图片
TensorFlow深度学习(2)_第5张图片
如果采用 tf.float64 精度保存π,则能获得更高的精度:
在这里插入图片描述
通过访问张量的 dtype 成员属性可以判断张量的保存精度:
TensorFlow深度学习(2)_第6张图片
TensorFlow深度学习(2)_第7张图片
进行类型转换时,需要保证转换操作的合法性, 例如将高精度的张量转换为低精度的张量时,可能发生数据溢出隐患。

布尔类型与整型之间相互转换也是合法的, 是比较常见的操作。一般默认 0 表示 False, 1 表示 True,在 TensorFlow 中,将非 0 数字都视为 True。
在这里插入图片描述

2.2待优化张量

为了区分需要计算梯度信息的张量与不需要计算梯度信息的张量,TensorFlow 增加了一种专门的数据类型来支持梯度信息的记录:tf.Variable。tf.Variable 类型在普通的张量类型基础上添加了 name,trainable 等属性来支持计算图的构建。
TensorFlow深度学习(2)_第8张图片
一般不需要用户关注 name 属性;trainable属性表征当前张量是否需要被优化,创建 Variable 对象时是默认启用优化标志,可以设置trainable=False 来设置张量不需要优化。
在这里插入图片描述

2.3创建张量

2.3.1从数组、列表对象创建

通过 tf.convert_to_tensor 函数可以创建新 Tensor,并将保存在 Python List 对象或者Numpy Array 对象中的数据导入到新 Tensor 中。
在这里插入图片描述
TensorFlow深度学习(2)_第9张图片

2.3.2创建全0或全1张量

在这里插入图片描述
TensorFlow深度学习(2)_第10张图片
通过 tf.zeros_like, tf.ones_like 可以方便地新建与某个张量 shape 一致, 且内容为全 0 或全 1 的张量。
TensorFlow深度学习(2)_第11张图片

2.3.3创建自定义数值张量

通过 tf.fill(shape, value)可以创建全为自定义数值 value 的张量,形状由 shape 参数指定。
TensorFlow深度学习(2)_第12张图片

2.3.4创建已知分布的张量

通过 tf.random.normal(shape, mean=0.0, stddev=1.0)可以创建形状为 shape,均值为mean,标准差为 stddev 的正态分布 N(mean,stddev2)。
TensorFlow深度学习(2)_第13张图片
通过 tf.random.uniform(shape, minval=0, maxval=None, dtype=tf.float32)可以创建采样自[minval, maxval)区间的均匀分布的张量。
TensorFlow深度学习(2)_第14张图片

2.3.5创建序列

tf.range(limit, delta=1)可以创建[0, limit)之间,步长为 delta 的整型序列,不包含 limit 本身。
在这里插入图片描述

2.4张量的典型应用

2.4.1标量

tf.keras.losses.mse(或 tf.keras.losses.MSE,两者相同功能)返回每个样本上的误差值,最后取误差的均值作为当前 Batch 的误差。
TensorFlow深度学习(2)_第15张图片

2.4.2向量

TensorFlow深度学习(2)_第16张图片

2.4.3矩阵

TensorFlow深度学习(2)_第17张图片
TensorFlow深度学习(2)_第18张图片

2.4.4三维张量

TensorFlow深度学习(2)_第19张图片
我们通过 layers.Embedding 层将数字编码的单词转换为长度为 100 个词向量:
TensorFlow深度学习(2)_第20张图片

2.4.5四维张量

TensorFlow深度学习(2)_第21张图片

2.5索引与切片

2.5.1索引

TensorFlow深度学习(2)_第22张图片
在这里插入图片描述
在这里插入图片描述
TensorFlow深度学习(2)_第23张图片

2.5.2切片

在这里插入图片描述
在这里插入图片描述
start: end: step切片的简写方式,其中从第一个元素读取时 start 可以省略,即 start=0 是可以省略,取到最后一个元素时 end 可以省略,步长为 1 时 step 可以省略。
在这里插入图片描述
TensorFlow深度学习(2)_第24张图片
在这里插入图片描述
在这里插入图片描述
TensorFlow深度学习(2)_第25张图片
在这里插入图片描述
在这里插入图片描述

2.6维度变换

2.6.1改变视图

在这里插入图片描述
TensorFlow深度学习(2)_第26张图片
在这里插入图片描述

2.6.2增删维度

在这里插入图片描述
通过 tf.expand_dims(x, axis)可在指定的 axis 轴前可以插入一个新的维度
TensorFlow深度学习(2)_第27张图片
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.6.3交换维度

TensorFlow深度学习(2)_第28张图片

2.6.4复制数据

TensorFlow深度学习(2)_第29张图片
TensorFlow深度学习(2)_第30张图片
TensorFlow深度学习(2)_第31张图片
TensorFlow深度学习(2)_第32张图片

2.6.5Broadcasting

TensorFlow深度学习(2)_第33张图片
TensorFlow深度学习(2)_第34张图片
TensorFlow深度学习(2)_第35张图片
TensorFlow深度学习(2)_第36张图片

2.7数学运算

加、减、乘、除是最基本的数学运算,分别通过 tf.add, tf.subtract, tf.multiply, tf.divide函数实现,TensorFlow 已经重载了+、 − 、 ∗ 、/运算符,一般推荐直接使用运算符来完成加、减、乘、除运算。
TensorFlow深度学习(2)_第37张图片

2.7.1乘方运算

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
TensorFlow深度学习(2)_第38张图片
在这里插入图片描述

2.7.2指数和对数运算

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
TensorFlow深度学习(2)_第39张图片

2.7.3矩阵相乘运算

根据矩阵相乘的定义,和能够矩阵相乘的条件是,的倒数第一个维度长度(列)和的倒数第二个维度长度(行)必须相等。
TensorFlow深度学习(2)_第40张图片
2832 322 =28*2
TensorFlow深度学习(2)_第41张图片

2.8前向传播实战

导入相应的库以及子库:
TensorFlow深度学习(2)_第42张图片
TensorFlow深度学习(2)_第43张图片
TensorFlow深度学习(2)_第44张图片
TensorFlow深度学习(2)_第45张图片
TensorFlow深度学习(2)_第46张图片
TensorFlow深度学习(2)_第47张图片

你可能感兴趣的:(TensorFlow深度学习,机器学习,深度学习,tensorflow)