Tensorflow:如何手动编辑梯度值
Tensorflow: How to Manually Edit Gradient Values
我正在从外部源读取梯度值(即计算是在别处完成的,但我想在 "master" 网络中累积不同的源),我只想使用 apply_gradients()
在张量流中操作。问题是,梯度以浮点数的形式发送。有什么方法可以使用 float 数组通过内置 Optimizer
函数应用渐变?
在一个非常小的示例/测试用例中,这就是我本质上想要做的。
W = tf.Variable(1.0)
b = tf.Variable(2.0)
trainable_variables = [W, b]
gradients = [0.05, 0.01] # Example gradients for W, b
# ... Somehow make this gradient vector into a tensor
optimizer.apply_gradients(zip(gradients_tensor, trainable_variables))
有很多方法可以做到这一点,特别是,您可以为外部渐变创建 placeholders,然后通过简单地在 [=21= 之前对它们执行算术来组合它们].
x = tf.Variable( ... )
f = x ** 2
g = tf.gradients(f, x)
my_gradient['x'] = tf.placeholder( ... ) # same size and type as x
g = [(grad + my_gradient[var.name], var) for grad, var in g]
optimizer.apply_gradients(g)
现在在优化步骤中,只需 feed_dict my_gradient['x'] 计算值。
如果他们不改变超时,你可以使用 tf.constant() 代替,但我看不到任何数学情况在 ML 中具有恒定(非零)梯度。
我正在从外部源读取梯度值(即计算是在别处完成的,但我想在 "master" 网络中累积不同的源),我只想使用 apply_gradients()
在张量流中操作。问题是,梯度以浮点数的形式发送。有什么方法可以使用 float 数组通过内置 Optimizer
函数应用渐变?
在一个非常小的示例/测试用例中,这就是我本质上想要做的。
W = tf.Variable(1.0)
b = tf.Variable(2.0)
trainable_variables = [W, b]
gradients = [0.05, 0.01] # Example gradients for W, b
# ... Somehow make this gradient vector into a tensor
optimizer.apply_gradients(zip(gradients_tensor, trainable_variables))
有很多方法可以做到这一点,特别是,您可以为外部渐变创建 placeholders,然后通过简单地在 [=21= 之前对它们执行算术来组合它们].
x = tf.Variable( ... )
f = x ** 2
g = tf.gradients(f, x)
my_gradient['x'] = tf.placeholder( ... ) # same size and type as x
g = [(grad + my_gradient[var.name], var) for grad, var in g]
optimizer.apply_gradients(g)
现在在优化步骤中,只需 feed_dict my_gradient['x'] 计算值。
如果他们不改变超时,你可以使用 tf.constant() 代替,但我看不到任何数学情况在 ML 中具有恒定(非零)梯度。