2.5.2 훈련 스텝 실행하기
이 구현 작업에서 가장 어려운 부분은 ‘훈련 스텝’입니다. 한 배치 데이터에서 모델을 실행하고 가중치를 업데이트하는 일입니다. 이를 위해 다음이 필요합니다.
1. 배치에 있는 이미지에 대해 모델의 예측을 계산합니다.
2. 실제 레이블을 사용하여 이 예측의 손실 값을 계산합니다.
3. 모델 가중치에 대한 손실의 그레이디언트를 계산합니다.
4. 이 그레이디언트의 반대 방향으로 가중치를 조금 이동합니다.
그레이디언트를 계산하기 위해 2.4.4절에서 소개한 텐서플로의 GradientTape 객체를 사용하겠습니다.
def one_training_step( , , ): with tf.GradientTape() as : ➊ = ( ) = tf.keras.losses.sparse_categorical_crossentropy( labels_batch, predictions) = tf.reduce_mean( ) ➊ = tape.gradient(average_loss, model.weights) ➋ update_weights( , model.weights) ➌ return average_loss
➊ 정방향 패스를 실행합니다(GradientTape 블록 안에서 모델의 예측을 계산합니다).
➋ 가중치에 대한 손실의 그레이디언트를 계산합니다. gradients 리스트의 각 항목은 model.weights 리스트에 있는 가중치에 매칭됩니다.
➌ 이 그레이디언트를 사용하여 가중치를 업데이트합니다(이 함수는 잠시 후에 정의하겠습니다).