神经网络训练那些事——激活函数 损失函数 梯度下降 退化学习率

再神经网络里面常见的激活函数主要有三种:tanh,sigmoid,relu

激活函数

  • sigmoid
    是常见的非线性激活函数y的范围是0-1,在TensorFlow中的对应的是tf.nn.sigmoid(x,name-None)

  • tanh函数
    非线性激活函数,y的值是-1-1,TensorFlow对应的是tf.nn.tanh(x,name=None)

  • Relu函数
    f(x)=max(0,x),tensorflow中对应的是tf.nn.relu(features,name=None)
    这个函数的优点是处理后的数据具有更好额稀疏性,只有最大数值与0.

损失函数

  • 均值平方差
    就是mse,均方误差越小,表明模型越好,

  • 交叉熵
    表现预测输入样本属于某一类的概率,越小,预测的效果越准
    损失函数的选取取决于输入标签数据的的类型,如果输入的是实数,无界的值,那么就应该使永平方差,如果输入的标签是位矢量,使用交叉熵可能会更合适。
    tensorflow 中常见的loss函数
    均值平方差,就是tf.reduce_mean(tf.pow(tf.sub(logits,outputs),2.0))
    交叉熵:主要有sigmoid函数,softmax函数

梯度下降

梯度下降是一个最优化算法,最优的逼近最小偏差模型,沿着梯度下降的方向求解最小值。主要有三种,
批量梯度下降算法,每次跟新都是讲训练集的所有样本都看一遍,计算量很大,并且速度慢
随机梯度下降算法:随机的看一个数据就算一下损失函数,非常快,但是收敛熊效果不是很好,可能在最优点晃来晃去。
小批量梯度下降算法:解决了以上的问题,就是采用折中的手段,小批量梯度下降,将数据分成若干批,按批处理更新参数,一批中的一组数据就决定了本次梯度的方向,下降起来就不容易跑偏,减少了随机性。

退化学习率

设置学习率的时候,需要在精度和速度上找到一个平衡
lr越大,学的就很快,但是精度可能不是很好
lr小,精度可能提升,但是速度就是耗费很多的时间
decay叫做退化学习率,就是解决训练过程中对于学习率大和小的优点可以为我们所用。
刚开始的时候,使用大的学习率进行速度的提升,后面使用小的学习率进行精度的提升。可以使用学习率衰减函数
def exponential_decay(learning_rate,global_step,decay_steps,decay_rate,staircase=False,name=None):
stairscase默认的值是false,如果变成true,代表的是没有衰减功能。只是使用一个初始的学习率而已。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值