Tensorflow知识总结
消除过拟合的方法
- L1正则化 绝对值
- L2正则化 平方
- L3正则化 立方
- L4正则化 4次方
- dropout
其中对图像的处理过程一般为:
输入 – > 卷积 – > 池化 –> 卷积 –> 池化 –> 消除过拟合 –>全连接层 – > 全连接层 –> 分类
max_pool函数的作用是降低系统的复杂度,其中pooling分为最大池化和平均值池化
线性回归
线性回归的目标是找到一个与训练数据最为吻合的线性函数。对于2D数据是找到一个与数据相吻合的线性函数
线性回归是一种找到最适合一组点的直线或超平面的方法
在卷积运算中,对图像降维是通过修改卷积核的strides(步长)参数进行降维的。
卷积层
单层CNN的实际用途是检测边缘。对于图像识别和分类任务而言,更常见的情形是使用不同的层类型支持某个卷积层。这些层有助于减少过拟合,并可加速训练过程和降低内存占用率。
tf.nn.depthwise_conv2d:将一个卷积层的输出连接到另一个卷积层的输入
tf.nn.separabel_conv2d:对于较大的模型,可保证在不牺牲准确率的前提下实现训练的加速。对于较小的模型,它能够快速收敛,但准确率较低。
tf.nn.conv2d_transpose:将一个卷积核应用于一个新的特征图,后者的每一部分都填充了与卷积核相同的值。当该卷积核遍历新图像时,任何重叠的部分都相加在一起。
激活函数
为神经网络引入非线性
在CNN中最常用的激活函数:
tf.nn.relu:
Relu是分段线性的。当输入为非负数时,输出与输入相同。当输入为负数时,输出均为0.
优点:不受梯度消失的影响,取值范围为[0,++]
缺点:当使用较大的学习速率时,易受达到饱和的神经元的影响。
tf.sigmoid:
sigmoid函数的返回值位于区间[0.0, 1.0]中。当输入值较大时,tf.sigmoid将返回一个接近于1.0的值,而输入值较小时,返回值将接近于0.0
tf.tanh:
双曲正切函数(tanh)与tf.sigmoid非常接近,且后者具有类似的优缺点。tf.tanh函数的值域为[-1.0, 1.0]
tf.nn.dropout:
依据某个可配置的概率将输出设为0.0.为学习到的输出添加少量噪声。
梯度是偏导数的矢量
Pandas 是用于进行数据分析和建模的重要库
- 张量(Tensor):是对高维数据的一种抽象式表达
Tensorflow张量是什么? - 张量时用来表示多维数据的
- 张量时执行操作时的输入或输出数据
- 用户通过执行操作来创建或计算张量
- 张量的形状不一定在编译时确定,可以在运行时通过形状推断计算得出。
会话是什么?
会话提供了估算张量和执行操作的运行环境,它是发放计算任务的客户端,所有计算任务都由它连接的执行引擎完成。
会话执行:
- 估算张量(Tensor.eval)
- 执行操作(Operation.run)
- 会话执行(Session.run)
会话执行原理:
调用sess.run(tain_op)语句执行训练操作时:
- 首先,程序内部提取操作依赖的所有前置操作。这些操作的节点共同组成了一副子图
- 然后,程序将子图中的计算节点、存储节点和数据节点按照各自的执行设备分类。相同设备上的节点组成了一副局部图
- 最后,每个设备上的局部图在实际执行时,根据节点间的依赖关系将各个节点有序的加载到设备上执行。
优化算法:
典型的机器学习和深度学习问题通常都需要转换为最优化问题进行求解。
求解最优化的问题的算法成为优化算法,他们通常采用迭代方式实现:首先设定一个初始的可行解。然后基于特定的函数反复重新计算可行解,直到找到一个最优解或达到预设的收敛条件。
不同的优化算法采用的迭代策略各有不同:
- 有的使用目标函数的一阶导数,如梯度下降法
- 二阶导数,如牛顿法
- 前几轮迭代的信息,如Adam
优化器是实现优化算法的载体:
一次典型的迭代优化应该分为以下3个步骤:
- 计算梯度: 调用compute_gradients方法
- 处理梯度: 用户按照自己需求处理梯度值,如梯度裁剪和梯度加权等
- 应用梯度: 调用apply_grandients方法,将处理后的梯度值应用到模型参数
Loss下降方法:
随机梯度下降
最速下降法: tf.train.AdamOptimizer()
监督学习典型算法:
- 线性回归(Linear Regression)
- 逻辑回归(Logistic Regression)
- 决策树(Decision Tree)
- 随机森林(Random Forest)
- 最紧邻算法(k-NN)
- 朴素贝叶斯(Naice Bayes)
- 支持向量机(SVM)
- 感知器(Perceptron)
- 深度神经网络(DNN)
Tensorflow训练模型的工作流
数据读入–> 数据分析 –> 数据规范化 –> 创建模型 –> 创建会话 –> 训练模型