더북(TheBook)

(update_weights 함수에 해당하는) ‘가중치 업데이트’ 단계의 목적은 이 배치의 손실을 감소시키기 위한 방향으로 가중치를 ‘조금’ 이동하는 것입니다. 이동의 크기는 ‘학습률’에 의해 결정됩니다. 학습률은 일반적으로 작은 값입니다. update_weights 함수를 구현하는 가장 간단한 방법은 각 가중치에서 gradient * learning_rate를 빼는 것입니다.

learning_rate = 1e-3   

def update_weights(gradients, weights):
    for g, w in zip(gradients, weights):
        w.assign_sub(g * learning_rate) ----- 텐서플로 변수의 assign_sub 메서드는 -=와 동일합니다.

실제로는 이런 가중치 업데이트 단계를 수동으로 구현하는 경우는 거의 없습니다. 그 대신 다음과 같이 케라스의 Optimizer 인스턴스를 사용합니다.

from tensorflow.keras import optimizers  

optimizer = optimizers.SGD(learning_rate=1e-3)  

def update_weights(gradients, weights):
    optimizer.apply_gradients(zip(gradients, weights))

이제 배치 훈련 스텝이 준비되었으니 훈련 에포크 전체를 구현할 수 있습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.