深度学习(六)--优化

1. 优化器(tensorflow)

    

  1.1 tf.train.GradientDescentOptimizer --梯度下降

   表达式:

   

# 传入学习率,目标优化损失
tf.train.GradientDescentOptimizer(learning_rate).minimize(loss)

 1.2 tf.train.MomentumOptimizer--动量梯度下降

 表达式:

# 优化损失函数
tf.train.MomentumOptimizer(learning_rate).minimize(loss)

 1.3 tf.train.AdamOptimizer--自适应学习率变化

 表达式:

# 自适应梯度下降
tf.train.AdamOptimizer(learning_rate).minimize(loss)

 1.4 总结:

  a . tensorflow中的优化器

        tf.train.GradientDescentOptimizer --
        tf.train.AdadeltaOptimizer --
        tf.train.AdagradOptimizer
        tf.train.AdagradDAOptimizer
        tf.train.MomentumOptimizer --
        tf.train.AdamOptimizer --
        tf.train.FtrlOptimizer
        tf.train.ProximalGradientDescentOptimizer
        tf.train.ProximalAdagradOptimizer
        tf.train.RMSPropOptimizer     -- 

  b. 各种优化器对比:
    1)标准梯度下降法:
       标准梯度下降先计算所有样本汇总误差,然后根据总误差来更新权值
     2)随机梯度下降法:
        随机梯度下降随机抽取一个样本来计算误差,然后更新权值
     3)批量梯度下降法:
       批量梯度下降算是一种折中的方案,从总样本中选取一个批次(比如一共有10000个样本,随机选取100个样本作为一个batch),然后计算这个batch的总误差,根据总误差来更新权值。

2. 学习率动态变化

  在模型不断学习的过程中,训练后期中模型的表现能力很强,此时应该降低学习率,使得模型能够快速的接近目标。

  学习率指数递减:

# 学习率指数递减
learning_rate = tf.train.exponential_decay(learning_rate,global_step,decay_steps,decay_rate)
'''
参数说明:
learning_rate:学习率初始值,默认为0.1
global_step:当前训练轮数,在定义时需要设置为不可训练
decay_steps:批次大小
decay_rate:多少次更新一次学习率(总样本/批次大小)
'''

3. 欠拟合与过拟合

1) 欠拟合

  现象:模型不能够捕捉数据的特征,从而不能够准确预测

  方法:

    ① 添加特征项,使得模型拥有更多了解数据的可能性;

    ② 减少正则化参数,构造复杂模型来预测结果
2) 过拟合

  现象:模型在训练集上拥有非常好的表现,但在预测集上表现不理想;

  方法:

    ① 增加数据集,降低模型的错误率;

    ② 正则化方法(代价函数增加正则项)

# 为参数w添加L2正则化项,命名为losses
tf.add_to_collection('losses',tf.contrib.layers.l2_regularizer(regularizer)(w))
# 计算损失
ce = tf.reduce_mean(tf.nn.sparse_softmax_cross_entropy_with_logits(logits=y,labels=tf.arg_max(y_predict,1)))
# 添加正则化项,构成最终的模型损失
loss = ce + tf.add_n(tf.get_collection('losses'))

    ③ Dropout(部分神经元工作)

# 在一层网络传播中dropout应用
W1 = tf.Variable(tf.truncated_normal([784,2000],stddev=0.1))
b1 = tf.Variable(tf.zeros([2000])+0.1)
L1 = tf.nn.tanh(tf.matmul(x,W1)+b1)#激活函数
L1_drop = tf.nn.dropout(L1,keep_prob)
# 注:在训练中使用dropout,但在测试集上必须保证全部的神经元工作,即 keep_prob=1.0

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
深度学习课程设计 一、课程简介 本课程是一门关于深度学习的课程,主要介绍深度学习的基本概念、原理、算法和应用。本课程旨在帮助学生了解深度学习的基本概念和方法,以及如何应用深度学习技术来解决实际问题。 二、教学大纲 1. 深度学习基础 (1) 深度学习概述 (2) 神经网络基础 (3) 激活函数、损失函数和优化器 (4) 反向传播算法 (5) 深度学习的常见问题和解决方案 2. 卷积神经网络 (1) 卷积神经网络概述 (2) 卷积层、池化层、全连接层 (3) LeNet、AlexNet、VGG、GoogLeNet、ResNet等经典卷积神经网络介绍 (4) 卷积神经网络在图像识别、目标检测、图像分割等领域的应用 3. 循环神经网络 (1) 循环神经网络概述 (2) LSTM、GRU等经典循环神经网络介绍 (3) 序列到序列模型、语言模型、机器翻译等领域的应用 4. 深度学习应用 (1) 图像分类 (2) 目标检测 (3) 图像分割 (4) 语音识别 (5) 自然语言处理 (6) 强化学习 5. 实验项目 (1) 利用卷积神经网络实现图像分类 (2) 利用循环神经网络实现语音识别 (3) 利用深度学习实现强化学习 (4) 利用深度学习解决实际问题 三、教学方法 本课程采用理论和实践相结合的教学方法。理论部分采用讲授和讨论的方式,实践部分采用编程实践和项目实践的方式。 四、教材和参考书目 主教材: 《深度学习》(花书):https://github.com/exacity/deeplearningbook-chinese 参考书目: 《Python深度学习》(Francois Chollet) 《TensorFlow实战》(黄文坚) 《深度学习入门》(斋藤康毅) 五、评估方式 1. 作业(30%) 2. 期中考试(30%) 3. 期末项目(40%) 、预备知识 本课程需要一定的数学基础,包括线性代数、微积分、概率论等知识。同时,需要一定的编程基础,熟练掌握Python编程语言。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值