반응형

저수준 API로 작성된 MNIST 코드에서 사용하는 tf.reduce_mean 함수에 대해 살펴봅니다


import tensorflow as tf

x = tf.constant([[1., 3.], [2., 6.]])

sess = tf.Session()

print(sess.run(x))
print(sess.run(tf.reduce_mean(x)))
print(sess.run(tf.reduce_mean(x, 0)))
print(sess.run(tf.reduce_mean(x, 1)))

sess.close()



[[1. 3.]

[2. 6.]]

3.0

[1.5 4.5]

[2. 4.]




tf.reduce_mean(x)처럼 두번째 인자를 적지 않은 경우  변수 x가 가리키는 배열 전체 원소의 합을 원소 개수로 나누어 계산합니다.

( 1 + 3 + 2 + 6 ) / 4 = 3 으로 계산 됩니다.



tf.reduce_mean(x, 0)는 열 단위로 평균을 냅니다.

첫번째 열의  원소의 평균은 1.5이고 두번째 열의 원소의 평균은 4.5입니다.  

그래서 계산 결과가 [1.5 4.5] 입니다.


[[1. 3.]
[2. 6.]]



tf.reduce_mean(x, 1)는 행 단위로 평균을 냅니다.

첫번째 행의  원소의 평균은 2이고 두번째 행의 원소의 평균은 4입니다.  

그래서 계산 결과가 [2 4] 입니다.


[[1. 3.]
[2. 6.]]




MNIST 코드에서는 정확도를 계산하기 위해서 tf.reduce_mean 함수가 사용됩니다.

correct_prediction에 저장되어 있는 라벨값과 모델에서 계산된 값이 일치하는지 여부(True, False)를 tf.cast 함수를 사용하여 실수 1 또는 0으로 변환한 후, tf.reduce_mean를 사용하여 평균을 계산합니다.


accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))




반응형

문제 발생시 지나치지 마시고 댓글 남겨주시면 가능한 빨리 답장드립니다.

도움이 되셨다면 토스아이디로 후원해주세요.
https://toss.me/momo2024


제가 쓴 책도 한번 검토해보세요 ^^

+ Recent posts