2017-03-05 12 views
0

ネットワークの出力(他の方法で計算)でグラディエントを得ることができます。グラディエントをすべてのパラメータにバックプロパゲーションしてネットワーク全体に適用できますか?テンソルフローを使用すると、既に計算されたグラジエントをすべてのパラメータにバックプロパゲーションして、ネットワーク全体にグラジエントを適用できますか?

答えて

0

これは、linkで確認できます。あなたは計算された勾配もtensorsまたはvariablesある場合は、gradientsを置き換えることができます

trainable_variables = tf.trainable_variables() 
grads = tf.gradients(self.cost, trainable_variables) 

if self.hps.optimizer == 'sgd': 
    optimizer = tf.train.GradientDescentOptimizer(self.lrn_rate) 
elif self.hps.optimizer == 'mom': 
    optimizer = tf.train.MomentumOptimizer(self.lrn_rate, 0.9) 

apply_op = optimizer.apply_gradients(
    zip(grads, trainable_variables), 
    global_step=self.global_step, name='train_step') 

あなたが計算した勾配が数値である場合、私はテンソルフローが簡単にこれを行うことができるとは確信していません。

+0

私はこのように、すべてのgradsを取得し、それらを適用する必要がありますと思います。私は最後のレイヤーのグラデーションのみを持つことができます。最初のレイヤーのグラデーションは先行レイヤーのレイヤーグラデーションとすべてのグラデーションを取得してから適用できます。ありがとうございました! –

関連する問題