tf.reduce_sum 은 텐서의 모든 성분의 총합을 계산하는 함수다.
예를 들어 다음과 같은 \(2 \times 1 \times 3\) 텐서 \(A\)를 구성하는 모든 성분의 총합을 구하기 위해서 tf.reduce_sum(A) 하면 21 이 나온다. 이 때 모든 차원(dimension)은 사라진다.
import tensorflow as tf
A = tf.constant([[[1, 2, 3]], [[4, 5, 6]]])
print("A=", A)
print(tf.reduce_sum(A))
Output:
A= tf.Tensor(
[[[1 2 3]]
[[4 5 6]]], shape=(2, 1, 3), dtype=int32)
tf.Tensor(21, shape=(), dtype=int32)
텐서 \(A\)의 행(axis=0) 방향의 합은 tf.reduce_sum(A, 0)로 계산하는데 결과는 [[5 7 9]]가 되어서 \(1\times3\) 텐서가 된다. 원래의 텐서에서 행 차원이 사라진 것이다. 깊이(axis=2) 방향의 합은 tf.reduce_sum(A, 2)로 계산하는데 결과는 [[6], [15]]가 되어서 \(2\times1\) 텐서가 된다. 원래의 텐서에서 깊이 차원이 사라진다.
print(tf.reduce_sum(A, 0))
print(tf.reduce_sum(A, 2))
Output:
tf.Tensor([[5 7 9]], shape=(1, 3), dtype=int32)
tf.Tensor(
[[ 6]
[15]], shape=(2, 1), dtype=int32)
옵션 keepdims 을 True 로 하면 차원은 유지되는 대신 길이는 1로 축소된다. 텐서 \(A\)의 행(axis=0) 방향의 합을 tf.reduce_sum(A, 0, keepdims=True)로 계산하면 결과가 [[[5 7 9]]]가 되어서 \(1\times1\times3\) 텐서가 된다. 원래의 텐서의 행 길이가 1로 축소됐지만 차원은 유지됐다. 깊이(axis=2) 방향의 합을 tf.reduce_sum(A, 2, keepdims=True)로 계산하면 결과가 [[[6]], [[15]]]가 되어서 \(2\times1\times1\) 텐서가 된다. 원래의 텐서의 깊이 길이가 1로 축소됐지만 차원은 유지됐다.
print(tf.reduce_sum(A, 0, keepdims=True))
print(tf.reduce_sum(A, 2, keepdims=True))
Output:
tf.Tensor([[[5 7 9]]], shape=(1, 1, 3), dtype=int32)
tf.Tensor(
[[[ 6]]
[[15]]], shape=(2, 1, 1), dtype=int32)
'프로그래밍 > TensorFlow2' 카테고리의 다른 글
TensorFlow2에서 1차, 2차 편미분 계산 (0) | 2021.07.25 |
---|---|
Model Subclassing 멀티 입력 신경망 모델 구현 방법 (0) | 2021.03.16 |
텐서와 변수 - 3 (0) | 2021.02.11 |
텐서와 변수 - 2 (0) | 2021.02.10 |
텐서와 변수 - 1 (0) | 2021.02.09 |
댓글