출처
edwith, https://www.edwith.org/, 머신러닝과 딥러닝 BASIC>
https://steemit.com/it/@sukjunko/38ndhz-sj
텐서플로 기본을 배워볼게여
텐서플로
- 구글에서 만들었어여
- 머신 인텔리전스를 위한 오픈소스 라이브러리에여
많은 라이브러리 중 왜 텐서플로냐
- 사람들이 많이 사용함
텐서플로 사람들이 많이 사용함
- 공부할 때 많은 자료가 있음
텐서플로는 그래서 뭐냐
- 데이터 플로 그래프를 사용해서 어떤 numerical한 계산을 할 수 있는 라이브러리
- 파이썬을 쓰니 개꿀
데이터 플로가 뭐지
- 노드와 노드를 구성하는 엣지를 그래프라고 함
- 데이터 플로 그래프에서 노드는 하나의 operation(더하기, 곱하기)
- 엣지는 데이터, 데이터 배열(tensor)
- 어떤 연산이 일어나 결과물을 얻거나 작업을 할 수 있는 것을 데이터 플로 그래프라 함
- 이런 것들을 할 수 있는게 텐서플로
- 텐서 = 데이터, 텐서 플로 = 데이터가 돌아다닌다
텐서플로 설치 방법
- 리눅스, 맥, 윈도우 전부 pip를 써야함
- bazel이라는 빌드 프로그램을 사용해서 설치 가능
- 검색해서 설치해라
- 난 아나콘다의 주피터 노트북 쓰겠음
- 이거 참고
텐서플로 설치 확인
>>> import tensorflow as tf
>>> tf.__version__
'1.10.1'
많은 소스코드들…
https://github.com/hunkim/DeepLearningZeroToAll/
Hello World!
- tensorflow를 tf로 불러옴
tf.constant()
를 사용해서 constant를 만듦- 실제로 그래프 속에 노드 하나가 있고 그 노드에 “Hello, TensorFlow”가 만들어진 것
- 실행하려면
Session()
이 필요 - 실행하는 명령어는
run()
- b라고 나오는 것은 Bytes literals라는 것으로 어쨋든 정상임
좀 더 복잡한 Computational Graph
- float32는 데이터 타입을 준 것
- 3.0, 4.0, (3+4) 노드 세 개를 만듦
- 출력 결과는 그래프의 한 요소를 보여주는 Tensor를 보여줌, 즉 더하기 결과가 나오지 않음 –> 세션을 만들어야 함
- 세션을 만들고
sees.run([node1, node2])
를 실행 sess.run(node3)
로 더하기도 실행
텐서플로의 구조
- 텐서플로는 기본 프로그램과 다름
- 첫 번째로 그래프를 빌드함
see.run(op)
로 그래프를 실행함- 그래프 속의 값이 나옴
Computational Graph를 다시 보면
- 그래프를 빌드하는 과정
sess.run(op)
로 세션이 오퍼레이션을 넣음- 리턴 값 확인 가능
Placeholder 노드
- 값을 상수로 정해서 넣는게 아니라 식을 만들고 값을 넣고 싶을 때 사용
- a와 b를 placeholder로 만듦
feed_dict
로 값을 넘겨줄 수 있음feed dict
에 값을 여러 개 넘겨주는데 보면 각각 실행해서 덧셈 결과 반환함
정리하면
- 텐서플로는 그래프를 정의하고 이 때 placeholder로 만들 수 있음
- placeholdoer는 세션을 실행할 때
feed_dict
로 값을 넘겨줌 - 그 후 결과를 출력
Tensor의 의미
- Tensor는 기본적으로 배열들을 말함
Tensor를 말할 때(Ranks)
- Ranks는 몇 차원 배열이냐를 의미
Tensor를 말할 때(Shapes)
- 각각의 elements에 몇 개 들어있는가가 Shape
- t = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]의 Shape은
–> [3 3] 혹은 [3, 3]으로 나타냄
Tensor를 말할 때(Types)
- 32타입을 많이 사용함
마지막으로 정리
- TensorFlow는 기존 프로그램과 달리 그래프를 먼저 만들고 그래프를 실행할 때 placeholder 노드는 feed_dict로 넘겨줄 수 있음
다음시간엔
- 이거 하겠음
Comments