더북(TheBook)

GradientTape를 다차원 텐서와 함께 사용할 수 있습니다.

x = tf.Variable(tf.zeros((2, 2))) 
with tf.GradientTape() as tape:
    y = 2 * x + 3
grad_of_y_wrt_x = tape.gradient(y, x) 

크기가 (2, 2)고 초깃값이 모두 0인 변수를 생성합니다.

grad_of_y_wrt_x는 (x와 크기가 같은) (2, 2) 크기의 텐서로 x = [[0, 0], [0, 0]]일 때 y = 2 * x + 3의 곡률을 나타냅니다.

변수 리스트의 그레이디언트를 계산할 수도 있습니다.

W = tf.Variable(tf.random.uniform((2, 2)))
b = tf.Variable(tf.zeros((2,)))
x = tf.random.uniform((2, 2)) 
with tf.GradientTape() as tape:
    y = tf.matmul(x, W) + b   
grad_of_y_wrt_W_and_b = tape.gradient(y, [W, b]) 

matmul은 텐서플로의 점곱 함수입니다.

grad_of_y_wrt_W_and_b는 2개의 텐서를 담은 리스트입니다. 각 텐서는 W, b와 크기가 같습니다.

다음 장에서 그레이디언트 테이프에 대해 자세히 알아보겠습니다.

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