- 前言
- 一、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
- 总结
创建张量:传入数值(标量),传入列表(向量)
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)
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?