AI/Tensorflow

1.Constant Tensor & Variable Tensor

동만쓰 2022. 4. 27. 11:45

Deep Learining System

 

1. Data set

Model을 만들기 전 필요하며 변수를 가지고 있지 않다. 데이터셋은 학습에 의해 update되지 않으므로 Immutable한 특징을 가지고 있다. Tensorflow에서는 이를 Constant Tensor로 정의한다.

 

2. Model 

모델 안에는 Model parameter인 Weight(w),Bias(b) 등의 변수가 존재한다. 변수들은 학습에 의해 update되며 mutable한 특깆을 가지고 있다. Tensorflow에서는 이를 Variavle Tensor로 정의한다. 

 

3. Loss

실제 값과 모델로 예측한 값의 차이를 loss라고 하며, 이 loss를 줄이는 방향으로 학습이 진행이 된다.

 

4. Optimizer

딥러닝 모델은 Loss function의 최소값을 찾는 것을 학습의 목표로 한다. 여기서 최소 값을 찾아가는 것을 최적화(Optimization)이라고 한고 이를 수행하는 알고리즘을 최적화 알고리즘(Optimizer)라고 한다.

 

텐서 선언
출력 결과

 

 

 

파이썬 자료구조와 Tensorflow 자료구조 비교

파이썬에서 사용하는 list와 np.array() 자료구조를 Tensorflow의 tf.constant,tf.Variable 형태로 바꿀 수 있다.

먼저 list와  np.array로 리스트를 만든다.

다음은 tf.constant로 변경하는 것이다.

다음은 tf.Variable이다.

type을 확인해보면 constant와 Variable 타입으로 변경되는 것을 확인할 수 있다.

 

*참고

Variable tensor는 Constant tensor로 바뀔 수 없지만 Constant tensor는 Variable tensor로 바꿀 수 있다.

(tf.Variable(CONSTANT_TENSOR)는 가능)

Variable tensor를 Constant tensor로 바꾸기 위해서는 tf.convert_to_tensor(VARIABLE_TENSOR)를 사용해야 한다.

 

Tensor 연산

Tensor끼리 연산하는 경우 어떤 결과가 나오는지 살펴보자

Constant+Constant=Constant가 나온다.

Constant+Variable=Constant가 나온다.

Variable+Variable=Constant가 나온다.

 

 

이같은 결과가 나오는 이유는 아래 사진을 보면 이해가 쉽다.

위 사진은 우리가 딥러닝 뉴럴 네트워크를 공부할 때 자주 보는 그림이다.

텐서 연산을 하게 되면 위 사진과 같이 Constant tensor는 Data set을, Variable tensor는 Parameter를 주는 것과 같은 의미이다.

다음 노드로 두 개의 합을 전달해주면 어떤 타입이 오든 다음 노드는 결과 값으로 Constant Tensor를 받게 된다.