美文网首页tensflow
tensorflow学习笔记3

tensorflow学习笔记3

作者: 山横烟聚 | 来源:发表于2018-11-26 20:20 被阅读1次

    4.2学习率

    learning_rate,表示每次参数更新的幅度大小。过大会导致待优化的参数在最小值附近波动,不收敛;而学习率过小,则收敛过慢。
    公式为:w_{n+1}=w_n-LearningRate\nabla
    代码如下:

    import tensorflow as tf
    
    w = tf.Variable(tf.constant(5,dtype=tf.float32))
    
    loss = tf.square(w+1)
    
    train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)
    
    with tf.Session() as sess:
        init_op = tf.global_variables_initializer()
        sess.run(init_op)
        for i in range (40):
            sess.run(train_step)
            w_val = sess.run(w)
            loss_val = sess.run(loss)
            print ("after %s steps: w is %f, loss is %f."%(i,w_val,loss_val))
    

    指数衰减学习率
    rate= base*decay*\frac{step}{Batch Size} 用函数表述为

    global_step = tf.Variable(0,trainable = False)
    learning_rate = tf.train.exponential_decay(
    LEARNING_RATE_BASE,#学习率初始值
    global_step,#当前训练轮数,为不可训练参量
    LEARNING_RATE_STEP,#更新学习率的频率
    LEARNING_RATE_DECAY,#学习率衰减率
    staircase = True/False#为True时取整数,为阶梯型衰减,反之为平滑曲线
    

    4.3滑动平均

    通过记录一段时间内所有参数w和b各自的平均值,可以增强模型的繁华能力。
    计算公式为:
    影子=衰减率\times影子+(1-衰减率)\times参数
    其中,衰减率为min\{ MOVING_{AVERAGE_{DECAY}},\frac{1+turns}{10+turns}\}
    代码为
    ema= tf.train.ExponentialMovingAverage(MOVING_AVERAGE_DECAY, global_step)
    其中,前者为滑动平滑率,接近1左右,后者为训练轮数。
    ema_op = ema.apply(tf.trainable_variables())
    其中,apply函数表示对括号内参数求滑动平均,自变量为把所有待训练参数汇总为列表。

    with tf.control_dependencies([train_step, ema_op]):
    train_op = tf.no_op(name = 'train')
    

    正则化

    神经网络在训练过程中可能会出现过拟合的情况,即在训练集上效果良好,而预测时效果不好,说明泛化能力差。
    正则化就是在损失函数之中给每个参数w加上权重,从而引入模型复杂度指标,抑制模型噪声,减小过拟合。
    公式为
    loss = loss(y与y_)+REGULARIZER*loss(w)
    第二项为超参数,给出参数w在总loss的比例,有不同的取法。
    对于loss_1(w)=\sum_i|w_i|,代码为loss(w)=tf.contrib.layers.l1_regularizer(REGULARIZER)(w)
    对于loss_1(w)=\sum_i|w_i^2|,代码为loss(w)=tf.contrib.layers.l2_regularizer(REGULARIZER)(w)
    把正则化修正加入到算法中用代码tf.add_to_collection('losses',tf.contrib.layers.l2_regularizer(regularizer)(w))
    loss=cem+tf.add_n(tf.get_collection('losses'))

    相关文章

      网友评论

        本文标题:tensorflow学习笔记3

        本文链接:https://www.haomeiwen.com/subject/nlvbqqtx.html