1

次のCNNコードの実装があります。それを使用してgrads_and_varsをGradientDescentOptimizerで計算する方法

optimizer = tf.train.GradientDescentOptimizer(cnn.learning_rate).minimize(loss = cnn.loss, global_step=global_step) 
grads_and_vars = optimizer.compute_gradients(cnn.loss) 
train_op = optimizer.apply_gradients(grads_and_vars, global_step=global_step) 

、私は次のエラーを取得する:

grads_and_vars = optimizer.compute_gradients(cnn.loss) 
AttributeError: 'Operation' object has no attribute 'compute_gradients' 

私はtf.train.exponential_decayで上記GradientDescentOptimizerの実装を使用すると、オプティマイザの属性「compute_gradients」 を提供していないことに気づきました。

誰かがこれを手伝ってくれますか?

答えて

1

compute_gradientsとはどちらもtf.train.GradientDescentOptimizerクラスのメソッドです。

問題は、オプティマイザをステップとして定義していることです。

optimizer = tf.train.GradientDescentOptimizer(cnn.learning_rate) 
grads_and_vars = optimizer.compute_gradients(cnn.loss) 
train_op = optimizer.apply_gradients(grads_and_vars, global_step=global_step) 

のようにminimizeコールを削除する必要があります。あなたは勾配の任意の特定の使用をしていない場合

しかし、あなたは確かに同様にあなたのtrain_opに、直接訓練ステップを定義するために.minimize(...)を使用することができます。apply_gradientshereをどのように機能するかについて

optimizer = tf.train.GradientDescentOptimizer(cnn.learning_rate) 
train_op = optimizer.minimize(loss=cnn.loss, global_step=global_step) 

さらなる説明を。

関連する問題