Maxima's Lab

[Python, Tensorflow] tensorflow.math (tf.abs, tf.add, tf.multiply, tf.argmax, tf.argmin) 본문

Python/Tensorflow

[Python, Tensorflow] tensorflow.math (tf.abs, tf.add, tf.multiply, tf.argmax, tf.argmin)

Minima 2022. 7. 10. 01:03
728x90
SMALL

오늘은 Tensorflow 내 Math 함수들에 대해서 알아보겠습니다.

tensorflow.math 내 사용해 볼 함수들은 다음과 같습니다.

 

  • tf.abs() : Tensor 내 각 성분들의 절대값을 계산하여 Tensor로 반환
  • tf.add() : 서로 다른 두 Tensor들의 각 성분들을 더하여 Tensor로 반환
  • tf.multiply() : 서로 다른 두 Tensor들의 각 성분들을 곱하여 Tensor로 변환
  • tf.argmax(), tf.argmin() : Tensor 내 특정 축(axis)를 기준으로 각각 최대값과 최소값의 인덱스들을 찾아 Tensor로 반환

 

# tf.abs()

import tensorflow as tf

x = tf.constant([-1.5])

print(tf.abs(x))
tf.Tensor([1.5], shape=(1,), dtype=float32)

1개의 Tensor를 tf.abs() 함수를 적용하면, Tensor 내 모든 성분들을 절대값 함수를 취해 동일한 shape의 Tensor로 반환합니다.


# tf.add() -1 

import tensorflow as tf

x = tf.constant([1.0])
y = tf.constant([3.0])

print(tf.add(x, y))
tf.Tensor([4.], shape=(1,), dtype=float32)

서로 다른 2개의 Tensor들을 tf.add() 함수를 적용하면 각 성분들을 더하여 동일한 shape의 Tensor로 반환합니다.

다음은 shape이 서로 다른 2개의 Tensor들에 대해 tf.add() 함수를 적용한 결과입니다.

 

# tf.add() -2 

import tensorflow as tf

x = tf.constant([1.0])
y = tf.constant([3.0, -1.0])

print(tf.add(x, y))
tf.Tensor([4. 0.], shape=(2,), dtype=float32)

위의 사례처럼, shape이 다른 Tensor들 간의 tf.add() 연산을 적용할 때에는 특정 축(axis)의 Length가 적은 Tensor를 복사하여 동일한 shape의 Tensor로 만들어 tf.add() 연산을 적용하게 됩니다.


# tf.multiply() -1 

import tensorflow as tf

x = tf.constant([[1.0, -2.0], [0.0, 3.0]])
y = tf.constant([[3.0, 5.0], [-2.0, 1.0]])

print(tf.multiply(x, y))
tf.Tensor(
[[  3. -10.]
 [ -0.   3.]], shape=(2, 2), dtype=float32)

서로 다른 2개의 Tensor들을 tf.multiply() 함수를 적용하면, 각 성분들을 곱하여 동일한 shape의 Tensor로 반환합니다.

다음은 shape이 서로 다른 Tensor들 간의 tf.multiply() 함수를 적용한 결과입니다.

# tf.multiply() -2 

import tensorflow as tf

x = tf.constant([[1.0, -2.0], [0.0, 3.0]])
y = tf.constant([[3.0, 5.0]])

print(tf.multiply(x, y))
tf.Tensor(
[[  3. -10.]
 [  0.  15.]], shape=(2, 2), dtype=float32)
# tf.multiply() -3 

import tensorflow as tf

x = tf.constant([[1.0, -2.0], [0.0, 3.0]])
y = tf.constant([[1.0], [5.0]])

print(tf.multiply(x, y))
tf.Tensor(
[[ 1. -2.]
 [ 0. 15.]], shape=(2, 2), dtype=float32)

tf.add() 연산과 유사하게, 특정 축(axis)의 Length 적은 Tensor를 기준을 복사하여 나머지 Tensor의 shape가 동일한 형태로 tf.multiply() 함수를 적용하게 됩니다.


# tf.argmax(), tf.argmin()

import tensorflow as tf

x = tf.constant([[1.0, 0.5, -5.0, 5.0], [0.5, 7.0, -3.0, -9.0]])
print(tf.argmax(x, 0))
print(tf.argmin(x, 0), '\n')

print(tf.argmax(x, 1))
print(tf.argmin(x, 1))
tf.Tensor([0 1 1 0], shape=(4,), dtype=int64)
tf.Tensor([1 0 0 1], shape=(4,), dtype=int64) 

tf.Tensor([3 1], shape=(2,), dtype=int64)
tf.Tensor([2 3], shape=(2,), dtype=int64)

1개의 Tensor를 tf.argmax(), tf.argmin() 함수를 적용하게 되면 해당 Tensor의 축(axis = 0, 1, ...)를 기준으로 최대값을 가지는 인덱스(index)를 찾아 Tensor로 반환하게 됩니다.

 

지금까지, Tensorflow 내 math 함수들 중 tf.abs(), tf.add(), tf.multiply(), tf.argmax(), tf.argmin()에 대해서 알아보았습니다.

728x90
LIST
Comments