import tensorflow as tf
tf.constant([[1,2,3],[4,5,6]])
#tf.constant(10)
#행렬이 아닌 스칼라 값도 생성가능
<tf.Tensor: shape=(2, 3), dtype=int32, numpy= array([[1, 2, 3], [4, 5, 6]], dtype=int32)>
p = tf.constant([[1,2,3],[4,5,6]])
p.shape
TensorShape([2, 3])
p.dtype
tf.int32
p[:,1:]
<tf.Tensor: shape=(2, 2), dtype=int32, numpy= array([[2, 3], [5, 6]], dtype=int32)>
p[...,1,tf.newaxis]
<tf.Tensor: shape=(2, 1), dtype=int32, numpy= array([[2], [5]], dtype=int32)>
p + 10
<tf.Tensor: shape=(2, 3), dtype=int32, numpy= array([[11, 12, 13], [14, 15, 16]], dtype=int32)>
tf.square(p)
<tf.Tensor: shape=(2, 3), dtype=int32, numpy= array([[ 1, 4, 9], [16, 25, 36]], dtype=int32)>
p @ tf.transpose(p)
<tf.Tensor: shape=(2, 2), dtype=int32, numpy= array([[14, 32], [32, 77]], dtype=int32)>
from tensorflow import keras
K = keras.backend
K.square(K.transpose(p)) + 9
<tf.Tensor: shape=(3, 2), dtype=int32, numpy= array([[10, 25], [13, 34], [18, 45]], dtype=int32)>
import numpy as np
a = np.array([2,4,5])
tf.constant(a)
#constant()를 통해 넘파이 배열을 텐서로 변환
<tf.Tensor: shape=(3,), dtype=int64, numpy=array([2, 4, 5])>
p.numpy()
#numpy()를 통해 텐서를 넘파이 배열로 변환
array([[1, 2, 3], [4, 5, 6]], dtype=int32)
tf.square(a)
<tf.Tensor: shape=(3,), dtype=int64, numpy=array([ 4, 16, 25])>
np.square(p)
#위의 두 코드처럼 넘파이 , 텐서플로우 연산을 자유자재로 사용 가능하다.
#넘파이는 64비트 정밀도 / 텐서플로우는 32비트 정밀도
#넘파이 배열로 텐서를 만들때는 dtype = tf.float32 여야 한다.
array([[ 1, 4, 9], [16, 25, 36]], dtype=int32)
pp = tf.constant(5.1, dtype=tf.float64)
tf.constant(2.1) + tf.cast(pp, tf.float32)
<tf.Tensor: shape=(), dtype=float32, numpy=7.2>
o = tf.Variable([[1,2,3],[4,5,6]])
o
<tf.Variable 'Variable:0' shape=(2, 3) dtype=int32, numpy= array([[1, 2, 3], [4, 5, 6]], dtype=int32)>
o.assign(3*o)
#o 행렬에 곱하기 3
<tf.Variable 'UnreadVariable' shape=(2, 3) dtype=int32, numpy= array([[ 3, 6, 9], [12, 15, 18]], dtype=int32)>
o[0,1].assign(77)
#행렬값 변경
<tf.Variable 'UnreadVariable' shape=(2, 3) dtype=int32, numpy= array([[ 3, 77, 9], [12, 15, 18]], dtype=int32)>
o[:,2].assign([99,999])
#슬라이스로 행렬값 변경
<tf.Variable 'UnreadVariable' shape=(2, 3) dtype=int32, numpy= array([[ 3, 77, 99], [ 12, 15, 999]], dtype=int32)>
o.scatter_nd_update(indices=[[0,0],[1,2]], updates=[100,200])
#[0,0] 과 [1,2]의 행렬값을 updates 뒤쪽의 값으로 업데이트함
<tf.Variable 'UnreadVariable' shape=(2, 3) dtype=int32, numpy= array([[100, 77, 99], [ 12, 15, 200]], dtype=int32)>