使用多个梯度下降的方式进行测试,同时使用ops.apply_gradient进行梯度的下降
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进行梯度的下降的更多相关文章
- OI常用读入方式效率测试
我来填坑了. 这次我用自己写的测试读入的程序来分别测试cin(不关闭流同步),scanf和读入优化的效率差别. 我们分别对三个阶段的数据量n进行测试,通过时间比对来观察性能的差异. n = 102 ...
- redis的list取出数据方式速度测试
redis测试: package business; import java.io.BufferedReader; import java.io.File; import java.io.FileIn ...
- 用ab的post方式进行测试
一.Ab是常用的性能测试工具,因为它支持windows…… 通常使用的命令是ab –c –n –k -r,分别表示:模拟终端数.发送包数.请求是否带keepalive.忽略错误,默认都是以GET方式去 ...
- 转: 将Eclipse代码导入到AndroidStudio的两种方式 ,测试了方法2,成功。
蛋疼,不知道为什么我的eclipse的logcat总是莫名其妙的显示一堆黄色字体的字,看不懂的那种,如下图: 然后查了一下资料,说可能是adt版本太低,手机系统太高. 然后本来想升级adt,但是各种折 ...
- Redis集群模式下的redis-py-cluster方式读写测试
与MySQL主从复制,从节点可以分担部分读压力不一样,甚至可以增加slave或者slave的slave来分担读压力,Redis集群中的从节点,默认是不分担读请求的,从节点只作为主节点的备份,仅负责故障 ...
- RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题
RNN梯度消失和爆炸的原因 经典的RNN结构如下图所示: 假设我们的时间序列只有三段, 为给定值,神经元没有激活函数,则RNN最简单的前向传播过程如下: 假设在t=3时刻,损失函数为 . 则对于一 ...
- Ineedle驱动方式dpdk测试性能
这次主要是测试在dpdk方案下,ineedle的处理包的性能. 发包工具: 使用立永当时写的一个发包工具:linux_pcap 做法:大概是从网上抓取了一些数据包,将源ip替换为随即ip,sip替换为 ...
- spring AOP 的几种实现方式(能测试)
我们经常会用到的有如下几种 1.基于代理的AOP 2.纯简单Java对象切面 3.@Aspect注解形式的 4.注入形式的Aspcet切面 一.需要的java文件 public class ChenL ...
- Java IO读写大文件的几种方式及测试
读取文件大小:1.45G 第一种,OldIO: public static void oldIOReadFile() throws IOException{ BufferedReader br = n ...
随机推荐
- linux下NVIDIA GPU驱动安装最简方式
之前一节已经写到了,上次的GPU driver驱动安装并不成功,因此,这次换了一种方式,比较傻瓜,但是很好使. 首先使用命令查看显示器的设备(请将显示器插在显卡上,如果插在集显上可能信息不正常) su ...
- 学习.NET中的AppDomain
学习.NET中的AppDomain 什么是AppDomain?AppDomain是一组程序集的逻辑容器,AppDomain是为了提供隔离而设计的.它提供了保护.配置和终止其中每一个应用程序的隔离 Ap ...
- linux使用VNC服务轻松远程安装oracle
VNC服务在远程服务器上安装oracle,新手安装oracle时总会遇到这样或者那样的问题,下面我就详细解说一下安装过程,其实oracle安装很简单,并不要把他相像的特别复杂. 本环境用:centos ...
- 3.flask核心与源码剖析
1.session session存储了特定用户会话所需的属性及配置信息,这样,当用户在应用程序的 Web 页之间跳转时,存储在 session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下 ...
- laravel swoole Call to undefined method Illuminate\Events\Dispatcher::fire()
报错: Call to undefined method Illuminate\Events\Dispatcher::fire() Whoops\Run::handleError("Unca ...
- POJ 1734 无向图最小环/有向图最小环
给定一张图,求图中一个至少包含三个点的环,环上的点不重复,并且环上的边的长度之和最小. 点数不超过100个 输出方案 无向图: /*Huyyt*/ #include<bits/stdc++.h& ...
- zabbix的简单操作(proxy代理分布式监控)
分布式监控 作用:分担压力,减轻负载,多机房监控 通过zabbix proxy的搭建,zabbix server可以远程从proxy获取到数据,这里的环境相当于zabbix server具有一个公网i ...
- Mongodb的聚合和管道
MongoDB 聚合 MongoDB中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果. aggregate() 方法 MongoDB中聚合的方法使用agg ...
- nginx跨域设置&文件上传大小限制
在部署项目的时候碰到这么一个问题:XMLHttpRequest cannot load,下面阐述一下这个问题 问题背景: 用nginx+tomcat部署项目.tomcat用的8080端口,nginx用 ...
- .NET-list扩展方法Distinct去重
原文链接:https://blog.csdn.net/daigualu/article/details/70800012 .NET中list的扩展方法Distinct可以去掉重复的元素,分别总结默认去 ...