使用多个梯度降低的方式进行测试,同时使用ops.apply_gradient进行梯度的降低

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

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

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

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

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算法的学习率增长

相关文章
相关标签/搜索