더북(TheBook)

코드 3-11 상수 텐서 입력과 함께 GradientTape 사용하기

input_const = tf.constant(3.) 
with tf.GradientTape() as tape:
    tape.watch(input_const)
    result = tf.square(input_const)
gradient = tape.gradient(result, input_const)

왜 이것이 필요할까요? 모든 텐서에 대한 모든 그레이디언트를 계산하기 위해 필요한 정보를 미리 앞서서 저장하는 것은 너무 비용이 많이 들기 때문입니다. 자원 낭비를 막기 위해 테이프는 감시할 대상을 알아야 합니다. 훈련 가능한 변수는 기본적으로 감시 대상입니다. 훈련 가능한 변수에 대한 손실의 그레이디언트를 계산하는 것이 그레이디언트 테이프의 주 사용 용도이기 때문입니다.

그레이디언트 테이프는 강력한 유틸리티입니다. 이계도(second-order) 그레이디언트, 즉 그레이디언트의 그레이디언트도 계산할 수 있습니다. 예를 들어 시간에 대한 물체 위치의 그레이디언트는 물체의 속도고, 이계도 그레이디언트는 가속도입니다.

수직 방향으로 낙하하는 사과의 위치를 시간에 따라 측정하고 position(time) = 4.9 * time ** 2임을 알았다면 가속도는 얼마일까요? 2개의 그레이디언트 테이프를 중첩하여 구해 보죠.

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