# RANK-0 a = tf.constant(10.) b = tf.constant(-5.) c = a + b d = a * b e = a - b f = a / b print('rank-0') print('a', a) print('b', b) print('c', c) print('d', d) print('e', e) print('f', f) print()
# RANK-1 a = tf.constant([5., -4.]) b = tf.constant([-2., -3.]) c = a + b d = a * b e = a - b f = a / b g = tf.tensordot(a, b, axes=1) print('rank-1') print('a', a) print('b', b) print('c', c) print('d', d) print('e', e) print('f', f) print('g', g) print()
# RANK-2 a = tf.constant([[1., 2.], [3., 4.]]) b = tf.constant([[5., 6.], [7., 8.]]) c = a + b d = a * b # 아다마르 프로덕트 e = a - b f = a / b g = tf.linalg.matmul(a, b) # 도트 프로덕트 print('rank-2') print('a', a) print('b', b) print('c', c) print('d', d) print('e', e) print('f', f) print('g', g) print()
rank-0 a tf.Tensor(10.0, shape=(), dtype=float32) b tf.Tensor(-5.0, shape=(), dtype=float32) c tf.Tensor(5.0, shape=(), dtype=float32) d tf.Tensor(-50.0, shape=(), dtype=float32) e tf.Tensor(15.0, shape=(), dtype=float32) f tf.Tensor(-2.0, shape=(), dtype=float32)
rank-1 a tf.Tensor([ 5. -4.], shape=(2,), dtype=float32) b tf.Tensor([-2. -3.], shape=(2,), dtype=float32) c tf.Tensor([ 3. -7.], shape=(2,), dtype=float32) d tf.Tensor([-10. 12.], shape=(2,), dtype=float32) e tf.Tensor([ 7. -1.], shape=(2,), dtype=float32) f tf.Tensor([-2.5 1.3333334], shape=(2,), dtype=float32) g tf.Tensor(2.0, shape=(), dtype=float32)
rank-2 a tf.Tensor( [[1. 2.] [3. 4.]], shape=(2, 2), dtype=float32) b tf.Tensor( [[5. 6.] [7. 8.]], shape=(2, 2), dtype=float32) c tf.Tensor( [[ 6. 8.] [10. 12.]], shape=(2, 2), dtype=float32) d tf.Tensor( [[ 5. 12.] [21. 32.]], shape=(2, 2), dtype=float32) e tf.Tensor( [[-4. -4.] [-4. -4.]], shape=(2, 2), dtype=float32) f tf.Tensor( [[0.2 0.33333334] [0.42857143 0.5 ]], shape=(2, 2), dtype=float32) g tf.Tensor( [[19. 22.] [43. 50.]], shape=(2, 2), dtype=float32)
Tensorflow의 Tensor는 numpy 호환 배열과, .shape, .dtype을 가지고 있다.
Tensorflow 2.0부터 Session 방식을 사용하지 않기 떄문에, Tensor를 평가하기 위해 .eval() 대신 .numpy()를 사용한다.
초기화 함수
초기화 함수를 이용하여 영백터, 영행렬, 단위행렬, 대각행렬, 난수텐서 등을 생성할 수 있다.