@markdown
# TensorFlow 기본 사용법
<br/>
## TensorFlow 개요
____
- TensorFlow는 graph로 연산하는 프로그래밍 시스템이다.
- 기계 학습과 딥러닝을 위해 구글에서 만든 오픈소스 라이브러리이다.
- 데이터 플로우 그래프 방식으로 데이터의 흐름을 노드와 엣지를 사용한 방향 그래프로 표현한다.
## TensorFlow 용어
____
- `Tensor` : 정형화된 다차원 배열, 내부적 자료구조는 Tensor를 통해 표현된다.
- `Session` : 그래프를 실행하기 위한 객체로, run()로 그래프를 실행한다.
- `op(Operation)` : 동작을 정의하는 것으로, Tensor를 입력 받아 연산을 수행하고, 반환한다.
- `graph` : 연산을 표현한 것
- `Node` : Operation 정의에 포함된 것
- `Edge` : Node 간 연결을 표현한 것
## graph 연산
____
- `TensorFlow`는 보통 `graph`를 조립하는 '구성 단계'와 `session`을 이용해 `graph`의 연산을 실행시키는 '실행 단계'로 구성된다.
- 각 연산을 쪼개고 `graph`로 연결하여 구성하고, `graph`의 `operation`을 실행시킨다.
### graph 처리 과정
- `TensorFlow`의 구현 코드를 통해 `graph`에 정의된 내용이 실행가능한 `operation`으로 변환되고 CPU나 GPU같이 이용가능한 연산 자원들에 뿌려진다.
- 머신러닝의 동작 계획을 `graph`로 표현한 것이고, 각 `tensor` 자료구조가 이동하면서 `operation`에 의해 연산하는 방식이다.
### graph 만들기
- `graph`를 만드는 것은 연산 정의부터 시작한다.
- 기본적으로 `TensorFlow`를 `import`하게 되면 작업 함수로 노드를 추가할 수 있는 default graph가 생성된다.
- `tf.get_default_graph()` 명령어로 호출 가능
```
# 간단한 행렬곱 graph 만들기
import tensorflow as tf
# constant op는 default graph의 노드로 구성된다.
matrix1 = tf.constant([[3., 3.]])
matrix2 = tf.constant([[2.],[2.]])
# product는 행렬곱의 결과를 의미한다.
product = tf.matmul(matrix1, matrix2)
```
- 실행 결과 default graph에 3개의 op가 구성된다. constant 2개, 행렬곱 1개
- 동작 계획을 정의만 한 것이지 실행한 것은 아니다.
### graph 실행
- 구성한 graph를 Session 객체를 이용해 실행할 수 있다.
```
sess = tf.Session()
result = sess.run(product)
print(result)
# 실행 후에 자원을 반납해준다.
sess.close()
```
- run()을 실행하면 위에서 구성한 3개의 op가 실행되고, 행렬곱 결과가 result로 반환된다.
```
# 자동으로 자원을 반납해주는 코드
with tf.Session() as sess:
result = sess.run([product])
print(result)
```
'Deep Learning' 카테고리의 다른 글
TensorFlow - Logistic Regression(로지스틱 회귀) (0) | 2017.07.09 |
---|---|
TensorFlow - Multi Variable Linear Regression(다중 선형회귀) (0) | 2017.07.08 |
TensorFlow - Linear Regression(선형 회귀) (0) | 2017.07.06 |
TensorFlow - 변수형 종류, 행렬 다루기 (0) | 2017.06.19 |
TensorFlow - Windows 7 설치하기 (0) | 2017.06.15 |