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. webpack 四个核心概念

    webpack 是当下最热门的前端资源模块化和打包工具.它可以将许多松散的模块(如 CommonJs 模块. AMD 模块. ES6 模块.CSS.图片. JSON.Coffeescript. LES ...

  2. Spring Boot【快速入门】简单案例

    Spring Boot[快速入门]   Spring Boot 概述 Build Anything with Spring Boot:Spring Boot is the starting point ...

  3. 像@Transactional一样利用注解自定义aop切片

    在spring中,利用@Transactional注解可以很轻松的利用aop技术进行事物管理.在实际项目中,直接利用自定义注解实现切片可以大大的提高我们的编码效率以及代码的简洁性. 实现以上的目标,主 ...

  4. LVM使用手册简化命令

    创建 hot_add    --查看新增的lun pvcreate /dev/sdb   --创建物理卷 pvcreate /dev/sdc   --创建物理卷 pvcreate /dev/sdd   ...

  5. Arch Linux 安装 ibus-rime

    参考网站 default.custom.yaml 在方案選單中添加五筆.雙拼 rime-wubi 操作方式 # 删除原rime(可选) sudo pacman -Rs ibus-rime ibus-t ...

  6. 【bzoj 4046 加强版】Pork barrel

    刚考完以为是神仙题--后来发现好像挺蠢的-- QwQ 题意 给你一张 \(n\) 个点 \(m\) 条边的无向图(不一定连通),有 \(q\) 组询问,每组询问给你 \(2\) 个正整数 \(l,h\ ...

  7. MyEclipse使用教程:添加和更新插件(一)

    [MyEclipse CI 2019.4.0安装包下载] 通过Eclipse Marketplace目录或各种更新站点类型添加插件来自定义您的Genuitec IDE. Genuitec提供以下IDE ...

  8. RocketMQ和Kafka的差异对比

    Broker差异 主从差异: kafka的master/slave是基于partition维度的,而rocketmq是基于broker维度的:kafka的master/slave是可以切换的,而roc ...

  9. Spring MVC 基于AnnotationFormatterFactory接口实现自定义的规则

    1.创建一个类来实现AnnotationFormatterFactory接口 代码: package com.oukele.CustomAnnotation; import com.oukele.mo ...

  10. SpringCloud使用feign时的复杂参数传递(转)

    Feign传参注意 最近在用SpringCloud尝试重构以前的项目,使用Feign客户端组件来调用微服务,经常出现参数传不过去变成null的问题,网上查了一下发现feign在参数上的使用还是有一定的 ...