2017-08-06 13 views
0

外部ソースから勾配値を読み取っています(計算は別の場所で行われますが、さまざまなソースを「マスター」ネットワークに蓄積したい)。テンソルフローのapply_gradients()である。問題は、勾配が浮動小数点として送られることです。浮動小数点配列を使用して、組み込みのOptimizer関数でグラデーションを適用する方法はありますか?Tensorflow:勾配値を手動で編集する方法

非常に少ない例/テストケースでは、これは私が本質的にやりたいことです。

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)) 
+0

質問が不明確で、詳細情報とサンプルコードを追加してください。 –

+0

良い点、私が探しているものの非常に最小の例を追加しました。 –

+0

[tf.convert_to_tensor](https://www.tensorflow.org/api_docs/python/tf/convert_to_tensor)を試しましたか? – aseipel

答えて

0

は特に、あなただけプレースホルダ外部グラデーションのを作成することができますし、単にapply_gradients前に、それらの算術演算を実行することによって、それらを組み合わせて、そうすることの多くの方法があります。

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の定数(およびゼロ以外の)勾配を持つ数学的状況はありません。

関連する問題