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_gradientsapply_gradients은 모두 tf.train.GradientDescentOptimizer 클래스의 메소드입니다.

문제점은 최적화 프로그램을 단계로 정의하는 것입니다. 이처럼 minimize 호출을 제거해야합니다 :

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) 

그것은 작동합니다. 당신은 그라디언트의 특정 사용을하고 있지 않은 경우

그러나, 당신은 참으로 유사하여 train_op에 직접 훈련 단계를 정의하는 .minimize(...)를 사용할 수 있습니다 apply_gradientshere 작동 방법에 대한

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

또한 설명.