博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
随机梯度下降法优化实例
阅读量:6916 次
发布时间:2019-06-27

本文共 1543 字,大约阅读时间需要 5 分钟。

对于随机梯度下降法,有前面的博客随机梯度下降法实例中可以看出,学习率的选取是很困难的,过大和过小都会出现问题;现在提出一种新方法来选取学习率。

每一轮:

learning_rate=0.1*0.99(因为global_step初值给0, 设为不被训练global_step = tf.Variable(0, trainable=False)

代码为:

#coding:utf-8#设损失函数 loss=(w+1)^2, 令w初值是常数10。反向传播就是求最优w,即求最小loss对应的w值#使用指数衰减的学习率,在迭代初期得到较高的下降速度,可以在较小的训练轮数下取得更有收敛度。import tensorflow as tfLEARNING_RATE_BASE = 0.1 #最初学习率LEARNING_RATE_DECAY = 0.99 #学习率衰减率LEARNING_RATE_STEP = 1  #喂入多少轮BATCH_SIZE后,更新一次学习率,一般设为:总样本数/BATCH_SIZE#运行了几轮BATCH_SIZE的计数器,初值给0, 设为不被训练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)#定义待优化参数,初值给10w = tf.Variable(tf.constant(5, dtype=tf.float32))#定义损失函数lossloss = tf.square(w+1)#tf.square()是对a里的每一个元素求平方#定义反向传播方法    使用minimize()操作,该操作不仅可以优化更新训练的模型参数,也可以为全局步骤(global_step)计数   train_step = tf.train.GradientDescentOptimizer(learning_rate).minimize(loss, global_step=global_step)#生成会话,训练40轮with tf.Session() as sess:    init_op=tf.global_variables_initializer()#初始化    sess.run(init_op)    for i in range(40):#40次        sess.run(train_step)#训练        learning_rate_val = sess.run(learning_rate)#学习率        global_step_val = sess.run(global_step)#计算获取计数器的值        w_val = sess.run(w)#计算权重        loss_val = sess.run(loss)#计算损失函数        #打印相应数据        print "After %s steps: global_step is %f, w is %f, learning rate is %f, loss is %f" % (i, global_step_val, w_val, learning_rate_val, loss_val)

 

 

global_step

转载于:https://www.cnblogs.com/fcfc940503/p/10961081.html

你可能感兴趣的文章
linux多线程示例
查看>>
java日期和字符串的相互转换
查看>>
如何给caffe添加新的layer ?
查看>>
数据库连接池
查看>>
植物 miRNA 研究
查看>>
分布式交易系统的并发处理, 以及用Redis和Zookeeper实现分布式锁
查看>>
http 304优化,了解客户端缓存
查看>>
SQLite(轻量级最佳数据库) 原理分析和开发应用zz
查看>>
改善用户体念:Jquery实现td tr单击事件(input事件)
查看>>
GridView标头居中,内容居中
查看>>
asp.net datatable中行的复制
查看>>
在Eclipse中安装ADT
查看>>
三十七、android sqlite3详解
查看>>
Open Build Service
查看>>
UVA 696 How Many Knights
查看>>
[更新]Luke.Net for Pangu 盘古分词版更新
查看>>
jsp 生成静态页面
查看>>
ipad 使用UIImageView显示网络上的图片
查看>>
转: std::string用法详解
查看>>
【入门经典】Master和Content页面之一
查看>>