Tensorflow中相关函数理论

基本概念
使用图(graphs)来表示计算内容,图中的节点称为op(operation),一个op获得0个或者多个Tensor,执行运算
使用会话(Session)的上下文(context)中执行图,,图必须在会话里被启动
使用tensor表示数据,可以看作一个n维的数组或列表
通过变量(Variable)维护状态
使用feed 和fetch 可以任意操作赋值或者从中提取数据
在这里插入图片描述
softmax
softmax可以给不同的对象分配概率。
在这里插入图片描述
损失loss
二次代价函数:实际值和预测值的平方差的均值
在这里插入图片描述
交叉熵代价函数:
在这里插入图片描述
对数释然函数常用来作为softmax回归的代价函数,如果输出层神经元是sigmoid函数,可以采用交叉熵代价函数。对数似然代价函数与softmax的组合和交叉熵与sigmoid函数的组合非常相似。对数释然代价函数在二分类时可以化简为交叉熵代价函数的形式。
tensorflow中的函数:
tf.nn.sigmoid_cross_entropy_with_logits() simoid和交叉熵搭配
tf.nn.softmax_cross_entropy_with_logits() softmax和交叉熵搭配
防止过拟合的三种方法
增加数据集,使用正则化,Dropout
优化器Optimizer

  • tf.train.GradientDescentOptimizer (梯度下降):
    标准梯度下降法:
    标准梯度下降先计算所有样本汇总误差,然后根据总误差来更新权值
    随机梯度下降法:
    随机梯度下降随机抽取一个样本来计算误差,然后更新权值
    批量梯度下降法:
    批量梯度下降算是一种折中的方案,从总样本中选取一个批次(比如一共有10000个样本,随机选取100个样本作为一个batch),然后计算这个batch的总误差,根据总误差来更新权值。
    表达式:W = W−η⋅∇WJ(W;x(i);y(i))
  • tf.train.AdadeltaOptimizer(Adadelta):
    在这里插入图片描述
    使用Adadelta我们甚至不需要设置一个默认学习率,在Adadelta不需要使用学习率也可以达到一个非常好的效果
  • tf.train.AdagradOptimizer(Adagrad):
  • tf.train.AdagradDAOptimizer:
    在这里插入图片描述
    i:代表第i个分类 t:代表出现次数 ϵ:的作用是避免分母为0,取值一般为1e-8 η:取值一般为0.01
    它是基于SGD的一种算法,它的核心思想是对比较常见的数据给予它比较小的学习率去调整参数,对于比较罕见的数据给予它比较大的学习率去调整参数。它很适合应用于数据稀疏的数据集(比如一个图片数据集,有10000张狗的照片,10000张猫的照片,只有100张大象的照片)。
    Adagrad主要的优势在于不需要人为的调节学习率,它可以自动调节。它的缺点在于,随着迭代次数的增多,学习率也会越来越低,最终会趋向于0。
  • tf.train.MomentumOptimizer(momentum):
    Momentum
    vt = γvt 1 + η∇WJ(W) (γ:动力,通常设置为0.9)
    W = W−vt
    当前权值的改变会受到上一次权值改变的影响,类似于小球向下滚动的时候带上了惯性。这样可以加快小球的向下的速度。
    NAG(Nesterov accelerated gradient)
    vt = γvt 1 + η∇WJ(W−γvt 1)
    W = W−vt
    NAG在TF中跟Momentum合并在同一个函数tf.train.MomentumOptimizer中,可以通过参数配置启用。
    在Momentun中小球会盲目地跟从下坡的梯度,容易发生错误,所以我们需要一个更聪明的小球,这个小球提前知道它要去哪里,它还要知道走到坡底的时候速度慢下来而不是又冲上另一个坡。γvt−1会用来修改W的值,计算W−γvt−1可以表示小球下一个位置大概在哪里。从而我们可以提前计算下一个位置的梯度,然后使用到当前位置。
  • tf.train.RMSPropOptimizer(RMSprop):
    RMS(Root Mean Square)是均方根的缩写
    在这里插入图片描述
    γ:动力,通常设置为0.9 η:取值一般为0.001 E[g2]t:表示前t次的梯度平方的平均值
    RMSprop借鉴了一些Adagrad的思想,不过这里RMSprop只用到了前t-1次梯度平方的平均值加上当前梯度的平方的和的开平方作为学习率的分母。这样RMSprop不会出现学习率越来越低的问题,而且也能自己调节学习率,并且可以有一个比较好的效果。
  • tf.train.AdamOptimizer(Adam):
    在这里插入图片描述
    β1: 一般取值0.9 β2 :一般取值0.999 ε:避免分母为0,一般取值10的-8次方
    就像Adadelta和RMSprop一样Adam会存储之前衰减的平方梯度,同时它也会保存之前衰减的梯度。经过一些处理之后再使用类似Adadelta和RMSprop的方式更新参数。

tf.train.FtrlOptimizer
tf.train.ProximalGradientDescentOptimizer
tf.train.ProximalAdagradOptimizer

LSTM基本理论模型
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_40732844/article/details/83899142