Deep Learning (TF, Keras, PyTorch)/TensorFlow basics
[Tensorflow] 행렬 원소간 곱 vs. 행렬 곱 (tf.math.multiply() vs. tf.matmul())
Rfriend
2021. 12. 18. 21:57
이번 포스팅에서는 Python Tensorflow와 numpy 모듈을 사용하여
(1) 행렬 원소 간 곱 (matrix element-wise product)
(2) 행렬 곱 (matrix multiplication)
하는 방법과 연산 방법을 소개하겠습니다.
얼핏보면 둘이 비슷해보이지만, 전혀 다른 연산으로서 주의가 필요합니다.
먼저, TensorFlow와 numpy 모듈을 불러오고, 예제로 사용할 2차원 행렬(matrix)을 만들어보겠습니다.
import numpy as np
import tensorflow as tf
print(tf.__version__)
#2.7.0
## matrix
x = tf.constant([[1, 2], [3, 4]])
print(x)
# tf.Tensor(
# [[1 2]
# [3 4]], shape=(2, 2), dtype=int32)
y = tf.constant([[0, 10], [20, 30]])
print(y)
# tf.Tensor(
# [[ 0 10]
# [20 30]], shape=(2, 2), dtype=int32)
(1) 행렬 원소 간 곱 (matrix element-wise product)
## [TensorFlow] matrix element-wise product
tf.math.multiply(x, y)
# <tf.Tensor: shape=(2, 2), dtype=int32, numpy=
# array([[ 0, 20],
# [ 60, 120]], dtype=int32)>
## [numpy] matrix element-wise produce
np.array(x) * np.array(y)
# array([[ 0, 20],
# [ 60, 120]], dtype=int32)
(2) 행렬 곱 (matrix multiplication)
## matrix multiplication using tf.matmul()
tf.matmul(x, y)
# <tf.Tensor: shape=(2, 2), dtype=int32, numpy=
# array([[ 40, 70],
# [ 80, 150]], dtype=int32)>
## [numpy] matrix multiplication using np.dot()
np.dot(x, y)
# array([[ 40, 70],
# [ 80, 150]], dtype=int32)
## [numpy] matrix multiplication using np.matmul()
np.matmul(x, y)
# array([[ 40, 70],
# [ 80, 150]], dtype=int32)
참고로, TensorFlow 의 텐서를 numpy의 array 로 변환하려면 numpy() 메소드를 사용하면 됩니다.
## casting tensor to numpy's array
tf.matmul(x, y).numpy()
# array([[ 40, 70],
# [ 80, 150]], dtype=int32)
이번 포스팅이 많은 도움이 되었기를 바랍니다.
행복한 데이터 과학자 되세요! :-)
728x90
반응형