News & Events
Tensorflow에서 Matrix 연산에 대해서 알아보겠습니다.
많은 데이터를 처리하기 위해서는 대부분의 경우에 데이터가 다차원의 Matrix로 구성이 됩니다.
이를 한번에 빠르게 연산을 하기 위해서는 Matrix 연산을 잘 다루어야 합니다.
Tensorflow에서 기본적으로 제공해주는 연산 함수들에 대해서 알아보겠습니다.
1. 덧셈 : tf.add()
import tensorflow as tf
x = tf.Variable([[2, 2, 2],[2, 2, 2]])
y = tf.Variable([[3, 3, 3],[3, 3, 3]])
z = tf.add(x, y)
init_op = tf.initialize_all_variables()
sess = tf.Session()
sess.run(init_op)
print(sess.run(z))
>[[5 5 5]
[5 5 5]]
2. 뺄셈 : tf.sub()
import tensorflow as tf
x = tf.Variable([[2, 2, 2],[2, 2, 2]])
y = tf.Variable([[3, 3, 3],[3, 3, 3]])
z = tf.sub(x, y)
init_op = tf.initialize_all_variables()
sess = tf.Session()
sess.run(init_op)
print(sess.run(z))
>[[-1 -1 -1]
[-1 -1 -1]]
3. 곱하기 : tf.mul()
element 끼리의 단순한 곱하기 결과입니다.
import tensorflow as tf
x = tf.Variable([[2, 2, 2],[2, 2, 2]])
y = tf.Variable([[3, 3, 3],[3, 3, 3]])
z = tf.mul(x, y)
init_op = tf.initialize_all_variables()
sess = tf.Session()
sess.run(init_op)
print(sess.run(z))
>[[6 6 6]
[6 6 6]]
4. Matrix 곱하기 : tf.matmul()
Matrix 끼리의 곱하기를 수행하기 위해서 곱하기가 수행되는 Matrix의 크기를 맞춰주기 위해서 transpose를 해주어 연산을 해야 합니다. 만약 두 matrix의 크기( 2×3 * 3×2 )가 맞지 않으면 연산에 실패하고 오류 메세지가 발생하게 됩니다.
import tensorflow as tf
x = tf.Variable([[2, 2, 2],[2, 2, 2]])
y = tf.Variable([[3, 3, 3],[3, 3, 3]])
z = tf.matmul(x,tf.transpose(y))
init_op = tf.initialize_all_variables()
sess = tf.Session()
sess.run(init_op)
print(sess.run(z))
>[[18 18]
[18 18]]
5. 3제곱 승수 : tf.pow()
import tensorflow as tf
x = tf.Variable([[2, 2, 2],[2, 2, 2]])
z = tf.pow(x, 3)
init_op = tf.initialize_all_variables()
sess = tf.Session()
sess.run(init_op)
print(sess.run(z))
>[[8 8 8]
[8 8 8]]
6. 지수값 : tf.exp()
실수 값만 지수값으로 연산이 됩니다. 정수일 경우에는 오류가 발생하게 됩니다.
import tensorflow as tf
x = tf.Variable([[2., 2., 2.],[2., 2., 2.]])
z = tf.exp(x)
init_op = tf.initialize_all_variables()
sess = tf.Session()
sess.run(init_op)
print(sess.run(z))
>[[ 7.38905621 7.38905621 7.38905621]
[ 7.38905621 7.38905621 7.38905621]]
7. log 값 : tf.log()
import tensorflow as tf
x = tf.Variable([[2., 2., 2.],[2., 2., 2.]])
z = tf.log(x)
init_op = tf.initialize_all_variables()
sess = tf.Session()
sess.run(init_op)
print(sess.run(z))
>[[ 0.69314718 0.69314718 0.69314718]
[ 0.69314718 0.69314718 0.69314718]]