您当前的位置: 首页 >  tensorflow

风间琉璃•

暂无认证

  • 2浏览

    0关注

    337博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

TensorFlow 2.0 API

风间琉璃• 发布时间:2022-01-24 20:08:49 ,浏览量:2

文章目录
  • 前言
  • 一、TensorFlow基础函数
    • 1. tf.constant
    • 2.tf.cast
    • 3.tf.Variable
    • 4.tf.convert_to_tensor
    • 5.tf.zeros / tf.ones
    • 6.tf.zeros_like / tf.ones_like
    • 7.tf.fill
    • 8.tf.range(start, limit, delta)
    • 9.tf.nn.softmax(logits,axis=None)
    • 10.argmax(input, axis=None)
  • 二、TensorFlow高阶函数
    • 1.GradientTape.watch
    • 2.tf.random.normal(shape,mean,stddev)
    • 3.tf.random.uniform(shape, minval,maxval,dtype)
    • 4. tf.keras.losses.mse / tf.keras.losses.MSE
    • 5.tf.reduce_mean
    • 6.layers.Dense(units, activation)
    • 7. build(input_shape)
    • 8.summary()
    • 9.tf.data.Dataset.from_tensor_slices()
    • 10.dataset.shuffle(buffer_size, seed=None)
    • 11.dataset.batch(batch_size)
    • 12.dataset.repeat(count)
    • 13.tf.keras.losses.categorical_crossentropy / tf.keras.losses.sparse_categorical_crossentropy
    • 14.optimizers.apply_gradients(grads_and_vars,name=None)
    • 15. trap.gradient(target,sources)
    • 16.tf.keras.layers.AveragePooling2D
    • 17.tf.keras.layers.GlobalAveragePooling2D
    • 18.tf.keras.layers.Flatten
  • 总结

一、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轴最大值位置索引

二、TensorFlow高阶函数 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)切片,实现了输入张量的自动化切片

# from_tensor_slices 为输入张量的每一行创建一个带有单独元素的数据集
ts = tf.constant([[1, 2], [3, 4]])
ds = tf.data.Dataset.from_tensor_slices(ts)   # [1, 2], [3, 4]
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)

关注
打赏
1665385461
查看更多评论
立即登录/注册

微信扫码登录

0.0380s