Tensorflowの勾配非同期更新例
1365 ワード
背景:
まず応用について説明します。私達はネットトレーニングをする時に、一つのバッtSize設定があります。つまり一つのバッtch一つのバッtchの更新勾配があります。このバッtchがある前提はこのバッtchの中のすべての写真の大きさが一致しています。もし一つのネットが画像の入力に対して要求がないなら、任意のサイズのものでもいいですが、一つのバッtchの更新勾配はどうすればいいですか?
操作は以下の通りです
最初の計算勾配:
まず応用について説明します。私達はネットトレーニングをする時に、一つのバッtSize設定があります。つまり一つのバッtch一つのバッtchの更新勾配があります。このバッtchがある前提はこのバッtchの中のすべての写真の大きさが一致しています。もし一つのネットが画像の入力に対して要求がないなら、任意のサイズのものでもいいですが、一つのバッtchの更新勾配はどうすればいいですか?
操作は以下の通りです
最初の計算勾配:
#
Optimizer = tf.train.GradientDescentOptimizer(1)
gradient = Optimizer.compute_gradients(loss) #
grads_holder = [(tf.placeholder(tf.float32, shape=g.get_shape()), v) for (g, v) in gradient]#
optm = Optimizer.apply_gradients(grads_holder) #
#
sess = tf.Session()
init = tf.global_variables_initializer()
sess.run(init)
#
grads = [] #
for i in range(batchsize): # batchsize
x_i = ... #
y_real = ... #
grad_i = sess.run(gradient, feed_dict={inputs: x_i, outputs: y_real}) #
grads.append(grad_i) #
# ,batchsize
grads_sum = {}
#
for i in range(len(grads_holder)):
k = grads_holder[i][0] #
# , , batchsize
grads_sum[k] = sum([g[i][0] for g in grads])
#
sess.run(optm,feed_dict=grads_sum)
以上のTensorflowの勾配非同期更新例は、小編集が皆さんに提供した内容の全部を共有しています。参考にしていただければと思います。どうぞよろしくお願いします。