1. ops = tf.train.GradientDescentOptimizer(learning_rate) 构建优化器

参数说明:learning_rate 表示输入的学习率

2.ops.compute_gradients(loss, tf.train_variables(), colocate_gradients_with_ops=True)

参数说明:loss表示损失值, tf.train_variables() 表示需要更新的参数, colocate_gradients_with_ops= True表示进行渐变的操作

tf.train.GradientDescentOptimizer 梯度下降优化器
import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt
TRAIN_STEP = 20 data = []
num_data = 1000
for i in range(num_data):
x_data = np.random.normal(0.0, 0.55)
y_data = 0.1 * x_data + 0.3 + np.random.normal(0.0, 0.03)
data.append([x_data, y_data]) # 第二步:将数据进行分配,分成特征和标签
X_data = [v[0] for v in data]
y_data = [v[1] for v in data]
learning_rate_placeholder = 0.5 # 初始学习率
global_step = tf.Variable(0, trainable=False) # 设置初始global_step步数
learning_rate = tf.train.exponential_decay(learning_rate_placeholder, global_step, 15, 0.1, staircase=True)
W = tf.Variable(tf.truncated_normal([1], -1, 1), 'name') # 进行参数初始化操作
b = tf.Variable(tf.zeros([1])) logits = X_data * W + b # 构造拟合函数
loss = tf.reduce_mean(tf.square(y_data - logits)) # 使用平方和来计算损失值
opt = tf.train.GradientDescentOptimizer(learning_rate) # 构造梯度下降优化器
grad = opt.compute_gradients(loss, tf.trainable_variables(), colocate_gradients_with_ops=True) # 计算梯度,这里的trainable_variables()表示所有的参数,这里我们可以使用参数进行finetune操作
grad_opt = opt.apply_gradients(grad, global_step=global_step) # 进行global的迭代更新,同时构造更新梯度的操作
UPDATA_OP = tf.get_collection(tf.GraphKeys.UPDATE_OPS) # 收集之前的操作
with tf.control_dependencies(UPDATA_OP): # 在进行训练操作之前先将保证其它操作做完
train_op = tf.group(grad_opt) # 进行操作的实例化,用于进行参数更新
sess = tf.Session()
sess.run(tf.global_variables_initializer()) # 权重参数初始化操作
for i in range(TRAIN_STEP):
sess.run(train_op) # 进行实际的参数更新操作 plt.plot(X_data, y_data, '+') # 画图操作
plt.plot(X_data, X_data*sess.run(W) + sess.run(b), '-')
plt.show()

tf.train.AdamOptimizer 自适应学习率梯度下降 

 tf.train.MomentumOptimizer(learning_rate, 0.7) 动量梯度下降
原理说明:


tf.train.AdagradOptimizer Adagra算法的学习率增加



												

使用多个梯度下降的方式进行测试,同时使用ops.apply_gradient进行梯度的下降的更多相关文章

  1. OI常用读入方式效率测试

    我来填坑了. 这次我用自己写的测试读入的程序来分别测试cin(不关闭流同步),scanf和读入优化的效率差别.   我们分别对三个阶段的数据量n进行测试,通过时间比对来观察性能的差异. n = 102 ...

  2. redis的list取出数据方式速度测试

    redis测试: package business; import java.io.BufferedReader; import java.io.File; import java.io.FileIn ...

  3. 用ab的post方式进行测试

    一.Ab是常用的性能测试工具,因为它支持windows…… 通常使用的命令是ab –c –n –k -r,分别表示:模拟终端数.发送包数.请求是否带keepalive.忽略错误,默认都是以GET方式去 ...

  4. 转: 将Eclipse代码导入到AndroidStudio的两种方式 ,测试了方法2,成功。

    蛋疼,不知道为什么我的eclipse的logcat总是莫名其妙的显示一堆黄色字体的字,看不懂的那种,如下图: 然后查了一下资料,说可能是adt版本太低,手机系统太高. 然后本来想升级adt,但是各种折 ...

  5. Redis集群模式下的redis-py-cluster方式读写测试

    与MySQL主从复制,从节点可以分担部分读压力不一样,甚至可以增加slave或者slave的slave来分担读压力,Redis集群中的从节点,默认是不分担读请求的,从节点只作为主节点的备份,仅负责故障 ...

  6. RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题

    RNN梯度消失和爆炸的原因 经典的RNN结构如下图所示: 假设我们的时间序列只有三段,  为给定值,神经元没有激活函数,则RNN最简单的前向传播过程如下: 假设在t=3时刻,损失函数为  . 则对于一 ...

  7. Ineedle驱动方式dpdk测试性能

    这次主要是测试在dpdk方案下,ineedle的处理包的性能. 发包工具: 使用立永当时写的一个发包工具:linux_pcap 做法:大概是从网上抓取了一些数据包,将源ip替换为随即ip,sip替换为 ...

  8. spring AOP 的几种实现方式(能测试)

    我们经常会用到的有如下几种 1.基于代理的AOP 2.纯简单Java对象切面 3.@Aspect注解形式的 4.注入形式的Aspcet切面 一.需要的java文件 public class ChenL ...

  9. Java IO读写大文件的几种方式及测试

    读取文件大小:1.45G 第一种,OldIO: public static void oldIOReadFile() throws IOException{ BufferedReader br = n ...

随机推荐

  1. 本地远程调试Linux 部署的web 项目

    1.在linux tomcat 下面的 bin 目录下增加一个远程调试的命令: declare -x CATALINA_OPTS="-server -Xdebug -Xnoagent -Dj ...

  2. Nginx编译参数详解

    Nginx编译参数 1.当我们安装好nginx后,输入命令  nginx -V 可以看到nginx的编译参数信息,例如 如下图 2. 编译参数如下图 # Nginx安装目的目录或路径 --prefix ...

  3. 安装Anaconda3-201812详解

    Anaconda指的是一个开源的Python发行版本,其包含了conda.Python等180多个科学包及其依赖项.  因为包含了大量的科学包,Anaconda 的下载文件比较大(约 531 MB), ...

  4. dispatch事件分发

    //赋值,监听change事件var el = document.getElementById('selectTimeHide');el.value=rs.text;//赋值el.dispatchEv ...

  5. io:轻松地创建缓存

    介绍 io模块是python中专门用来进行流处理的模块 StringIO 提供字符串形式的缓存,可以不断地往里面写入数据,最后一次性读出 import io # 创建相应的缓存 buf = io.St ...

  6. 爬虫之如何找js入口(一)

    目标网页:https://m.gojoy.cn/pages/login/ 将我删除i ndex?from=%2Fpages%2Fuser%2Findex 需要工具:chrome和油猴 油猴代码: // ...

  7. 小程序UI设计(6)-布局分解-九宫格

    今天我们来个庖丁解牛.对于一个完整的组合组件,看看通过工具是如何轻松完成的.首先看看九宫格完整的样子. 结构树是这样的.在结构树中,我们可以看到WViewColumn下面有九个WViewRow.WVi ...

  8. C++的一些黑暗料理

    本文中的“黑暗料理”仅限本人在学习C++的过程中感觉易忘.有趣.不为大多数人所知的一些特性. 1. C++中int型数据在VC++环境下最小值为什么是 -32678,而不是-32677,其中涉及到原码 ...

  9. magento获取当前栏目ID号与栏目名称函数

    Magento获取当前栏目ID:$_cat= new Mage_Catalog_Block_Navigation();$curent_cat= $_cat->getCurrentCategory ...

  10. jmeter中的几种参数化场景

    1.request路径中引用参数 2.body中引用参数 3.parameter中引用参数 4.header中引用参数,如token这类跟用户相关参数 5.response assertion中引用参 ...