TensorFlow 2.0 API

数值类型的张量是 TensorFlow 的主要数据载体, 根据维度数来区分,可分为:
(1)标量(Scalar)。 单个的实数,如 1.2, 3.4 等, 维度(Dimension)数为 0, shape 为[ ]

(2)向量(Vector)。 𝑛个实数的有序集合,通过中括号包裹,如[1.2], [1.2, 3.4]等,维度数为 1,长度不定, shape 为[𝑛]

(3)矩阵(Matrix)。 𝑛行𝑚列实数的有序集合,如[ [1,2], [3,4] ],也可以写

(4)张量(Tensor)。 所有维度数dim > 2的数组统称为张量。 张量的每个维度也作轴(Axis),一般维度代表了具体的物理含义。

比如 Shape 为[2,32,32,3]的张量共有 4 维,如果表示图片数据的话,每个维度/轴代表的含义分别是图片数量、 图片高度、 图片宽度、 图片通道数,其中 2 代表了 2 张图片, 32 代表了高、 宽均为 32, 3 代表了 RGB 共 3 个通道。张量的维度数以及每个维度所代表的具体物理含义需要由用户自行定义。

在 TensorFlow 中间,为了表达方便,一般把标量、向量、矩阵也统称为张量,不作区分,需要根据张量的维度数或形状自行判断

1. tf.constant

创建张量:传入数值(标量),传入列表(向量)

2.tf.cast

类型转换: 数值,张量都可传入, tf.cast( num , dtype=tf.int32)

3.tf.Variable

待优化张量:为了区分需要计算的梯度信息的张量与不需要计算梯度信息的张量,tf.Variable数据类型来支持梯度信息的记录,计算题的构建,可以将普通张量转换为待优化张量,也可以直接创建待优化张量

4.tf.convert_to_tensor

将Numpy Array( Python List) 对象数据中转换为新的张量,其实和tf.constant的功能一样

5.tf.zeros / tf.ones

创建为全 0 或者全 1 的张量:传入的数据是指tf.shape,即张量的形状,这里与tf.constant传入的数值有区别

6.tf.zeros_like / tf.ones_like

创建与某个张量(传入参数)shape一致,并且内容全为0 / 1

7.tf.fill

创建自定义数值张量,全初始为某一个值,tf.fill( [ a,b ], x)

8.tf.range(start, limit, delta)

创建一段连续的整型序列, 在区间[ satrt, limit) , 步长 为delta

9.tf.nn.softmax(logits,axis=None)

logits:一个非空的Tensor。必须是下列类型之一:half, float32,float64
axis:将在其上执行维度softmax。默认值为-1,表示最后一个维度

作用:把一个N*1的向量归一化为(0,1)之间的值, 即将一组数转换成预测的概率,原先数值大的数概率会进一步预测较大,原先数值小的数会概率预测变小,且所有预测的概率之和为1,所以该函数常用于分类问题,对最后输出结果进行处理,得到概率

10.argmax(input, axis=None)

计算张量axis轴最大值位置索引

1.GradientTape.watch

将普通的张量临时加入跟踪梯度信息的列表,从而支持自动求导功能

2.tf.random.normal(shape,mean,stddev)

创建形状为shape,均值为mean,标准差为stddev的正太分布的张量, 默认标志正太分布N(0,12)
tf.random.normal( [a,b] , mean = x, stddev = y)

3.tf.random.uniform(shape, minval,maxval,dtype)

创建[minval, maxval]区间的均匀分布的张量,默认[0,1]

4. tf.keras.losses.mse / tf.keras.losses.MSE

均方误差函数:获得样本值的误差值
loss_mse = tf.reduce_mean(tf.losses.MSE(y_onehot, logits))
y_onehot已知标签, logits 输出值

5.tf.reduce_mean

获取一组数值的平均值

6.layers.Dense(units, activation)

units:代表该层的输出维度
activation:激活函数,即神经网络的非线性变化
layers.Dense(128, activation=tf.nn.relu) :[ b ,128]

7. build(input_shape)

初始化网络的权重的维度,可以根据输入来指定权重的维度
model = layers.Dense(256, activation=tf.nn.relu) # 类的实例化
model.build(input_shape=[None, 28 * 28]) # 类的成员方法

(权值)张量𝑾和(偏置)𝒃存储在类的内部,由类自动创建并管理,类的偏置成员 bias向量, 一般初始化为全 0

8.summary()

输出网络模型各层的参数状况: model.summary()

9.tf.data.Dataset.from_tensor_slices()

将输入的张量或者Numpy类型的第一个维度看做样本的个数,沿前第一个维度将tensor(Numpy格式会自动转为tensor)切片,实现了输入张量的自动化切片


ts = tf.constant([[1, 2], [3, 4]])
ds = tf.data.Dataset.from_tensor_slices(ts)

10.dataset.shuffle(buffer_size, seed=None)

可以随机洗牌此数据集的元素。此数据集使用buffer_size的元素填充缓冲区,然后从 该缓冲区中随机采样元素,用新元素替换所选元素。为了实现完美的洗牌,需要缓冲区大小大于或等于数据集的完整大小

注:参数buffer_size值越大,意味着数据混乱程度也越大

11.dataset.batch(batch_size)

可以将此数据集的连续元素合并到batch中,数量大小为batch_size

12.dataset.repeat(count)

将数据重复使用count epoch,若为空,则无数次重复

13.tf.keras.losses.categorical_crossentropy / tf.keras.losses.sparse_categorical_crossentropy

函数原型:

tf.keras.losses.categorical_crossentropy(y_true, y_pred, from_logits=False)

交叉熵损失计算函数,其中 sparse 的含义是,真实的标签值 y_true 可以直接传入 int 类型的标签类别,即sparse时y不需要one-hot,但categorical 需要

如果 labels 是 one-hot 编码,用 categorical_crossentropy
如果你的 tagets 是 数字编码 ,用 sparse_categorical_crossentropy

在 Softmax 函数的数值计算过程中, 容易因输入值偏大发生数值溢出现象;在计算交叉熵时,也会出现数值溢出的问题

为了数值计算的稳定性, TensorFlow 中提供了一个统一的接口,将 Softmax 与交叉熵损失函数同时实现,同时也处理了数值不稳定的异常,一般推荐使用这些接口函数,避免分开使用 Softmax 函数与交叉熵损失函数

函数式接口为tf.keras.losses.categorical_crossentropy(y_true, y_pred, from_logits=False)

其中 y_true 代表了One-hot 编码后的真实标签, y_pred 表示网络的预测值
当 from_logits 设置为 True 时,y_pred 表示须为未经过 Softmax 函数的变量 z
当 from_logits 设置为 False 时, y_pred 表示为经过 Softmax 函数的输出。

为了数值计算稳定性,一般设置 from_logits 为 True,此时
tf.keras.losses.categorical_crossentropy 将在内部进行 Softmax 函数计算,所以不需要在模型中 显式调用 Softmax 函数,例

14.optimizers.apply_gradients(grads_and_vars,name=None)

grads_and_vars: (gradient, variable) 对的列表 name: 操作名
对variable进行更新

optimizers.apply_gradients(zip(grads, model.trainable_variables))

15. trap.gradient(target,sources)

target: 被微分的Tensor或者Tensor列表,要求导的函数
sources: Tensors 或者Variables列表 函数求导的自变量

grads = tape.gradient(loss_ce, model.trainable_variables)

16.tf.keras.layers.AveragePooling2D

函数原型:

tf.keras.layers.AveragePooling2D(
    pool_size=(2, 2), strides=None, padding='valid', data_format=None,
    **kwargs
)

通过为输入的每个通道 获取输入窗口(大小由pool_size定义)上的平均值,沿输入的空间维度(高度和宽度)对输入进行下采样。窗口在每个维度上都会以大步移动

17.tf.keras.layers.GlobalAveragePooling2D

函数原型:

tf.keras.layers.GlobalAveragePooling2D(
    data_format=None, keepdims=False, **kwargs
)

全局平均池化,深度神经网络中经常使用的一个层,使用前后的尺寸分别为[B,H,W,C]->[B,C]. 一般用来代替全连接层

18.tf.keras.layers.Flatten

函数原型:

tf.keras.layers.Flatten(
    data_format=None, **kwargs
)

用于将输入层的数据压成一维的数据,一般用再卷积层和全连接层之间(因为全连接层只能接收一维数据,而卷积层可以处理二维数据,就是全连接层处理的是向量,而卷积层处理的是矩阵

提示:这里对文章进行总结:

Original: https://blog.csdn.net/qq_53144843/article/details/122672766
Author: 卷卷怪
Title: TensorFlow 2.0 API

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/521605/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球