본문 바로가기
프로그래밍/TensorFlow2

tf.reduce_sum 함수

by 세인트워터멜론 2021. 3. 12.

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
tf.reduce_sum 함수  (0) 2021.03.12
텐서와 변수 - 3  (0) 2021.02.11
텐서와 변수 - 2  (0) 2021.02.10
텐서와 변수 - 1  (0) 2021.02.09

댓글0