텐서플로우
핵심 컨셉
텐서(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: 학습 시에 전체 트레이닝 데이터를 한 번 다 도는 것을 의미한다.
'머신러닝 읽어주는 남자' 카테고리의 다른 글
[오직 컨셉]Generative model vs Discriminative model (0) | 2018.04.24 |
---|---|
[오직 컨셉]Gradient Descent (0) | 2018.04.23 |
[오직 컨셉] Attention (0) | 2018.04.13 |
[오직 컨셉] Word Embedding (0) | 2018.04.13 |
[오직 컨셉]RNN, LSTM, GRU, Seq2Seq (0) | 2018.04.12 |