본문 바로가기

머신러닝 읽어주는 남자

[오직 컨셉] 텐서플로우(Tensorflow)

반응형

텐서플로우


핵심 컨셉


텐서(tensor)라는 노드로 그래프를 구성하고 세션에서 그래프를 실행한다.

(정확히는 노드를 실행시키므로써 그래프를 실행시킨다)


<예시>

2+3 =5라는 것을 계산하고 싶다면?


1. 2라는 A 노드를 생성한다. ( a = tf.constant(2))

2. 3이라는 B 노드를 생성한다. (b = tf.constant(3))

3. 첫번째 노드와 두번째 노드를 더하는 C 노드를 생성한다. (c = a+b)

4. 세션을 만든다. (sess = tf.Session())

5. 세션에 C 노드를 넣고 실행시키면 5가 튀어나온다. (sess.run(c) ==> 5)




Tensor란?


여기서는 모든 종류의 데이터를 의미한다. 이 tensor는 shape이 존재한다. 


<예시>

0차 Tensor 이자 스칼라이자 shape:() ==> 3


1차 tensor 이자 벡터이자 shape:(1) ==> [3] 

(의미적으로 위의 스칼라랑 같지만 프로그램 및 수학적으로 다르므로 잘 구별해서 써야한다.)


1차 tensor 이자 벡터이자 shape:(2) ==> [3,4]


2차 tensor 이자 행렬이자 shape:(2,2) ==> [[3,4],[5,6]]


3차 tensor 이자 shape:(4,1,2) ==> [[[3,4]], [[5,6]], [[7,8]],[[9,10]]] 



필수 구성요소


Constant: 일반적인 상수 값을 선언할때 쓰인다. 


Placeholder: 값을 넣어야하는 곳이다. 세션을 실행할때 값을 넣으며 일반적으로 데이터를 넣는다. 


Variable: 플레이스홀더와 반대로 값을 넣을 필요가 없는 곳이다. 대신 초기화가 필수이며 학습 파라미터를 이것으로 선언한다.


Optimizer: 여기서 backpropagation이 일어나며 내부적으로 tf.assign함수가 있어 실행을 하면 학습가능한 모든 variable을 자동 update를 한다.


Epoch: 학습 시에 전체 트레이닝 데이터를 한 번 다 도는 것을 의미한다. 





반응형