일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- vscode
- c++
- 시간복잡도
- string 메소드
- double ended queue
- UI한글변경
- 알고리즘 공부방법
- scanf
- getline
- EOF
- 입/출력
- correlation coefficient
- 자료구조
- 백준
- 장고란
- Django란
- 엑셀
- Django의 편의성
- 프레임워크와 라이브러리의 차이
- 2557
- string 함수
- 연결요소
- 매크로
- 이분그래프
- 입출력 패턴
- Django Nodejs 차이점
- 구조체와 클래스의 공통점 및 차이점
- k-eta
- 표준 입출력
- iOS14
- Today
- Total
Storage Gonie
모두를 위한 딥러닝 제3강 ML lab 01 - TensorFlow의 설치및 기본적인 operations (new) 본문
모두를 위한 딥러닝 제3강 ML lab 01 - TensorFlow의 설치및 기본적인 operations (new)
Storage Gonie 2018. 9. 1. 16:02# 텐서플로우란?
- data flow graphs를 이용해 숫자연산을 하기위한 구글에서 만든 오픈소스 라이브러리
- Python으로 프로그래밍을 할 수 있기 때문에 인기가 있음.
# 텐서플로우가 좋은 이유
- Gitgub에서 2017년 10월 부동의 1위를 기록
- 그만큼 공부할 때 참고할 수 있는 자료가 많음
https://twitter.com/fchollet/status/915366704401719296
# Data Flow Graph는 무엇인가?
- 노드는 값 또는 연산을 가지고, 선은 Tensors(multi-dimensional data arrays)의 전달을 나타내며 수학적인 연산을 그래프 형태로 나타낸 것을 말한다.
https://www.tensorflow.org/guide/graphs
# Linux, Mac, Windows 공통 설치방법
$ (sudo -/H) pip install --upgrade tensorflow # CPU 버전
$ (sudo -/H) pip install --upgrade tensorflow - gpu # GPU 버전
# 설치확인
$ python3
>>import tensorflow as tf
>>tf.__version__ # 버전 출력
'1.0.0' # 정상적으로 출력되면 설치 완료
# Tensorflow 간단한 출력 및 덧셈예제
- tf.constant(number, tf.type) 혹은 tf.constant(number) 는 값이 고정되어 변하지 않는 상수노드이다.
- tf.placeholder(tf.type) 는 feed_dict = {라벨 : [ ], 라벨 : [ ], 라벨 : [ ]} 을 통해 값이 입력 및 교체되는 노드이다.
* tf.placeholder 또는 tf.Variable를 사용하면 다른거 실행전에 sess.run(tf.global_variables_initializer())을 해줘야한다.
- tf.Variable( , name ='') 텐서플로우 실행중에 제체적으로 수정될 수 있는 노드이다. 우리가 생각하는 일반적인 변수라고 생각하면 될거같다.
<hello world 출력예제>
>>hello = tf.constant("Hello, TensorFlow!") # 문자열 데이터가 들어가있는 노드를 생성
>>sess = tf.Session() # 그래프를 실행하기위해 필요한 세션 생성
>>print(sess.run(hello)) # 세션을 이용해 hello노드 실행
b'Hello, TensorFlow!' # 'b'는 Byte 문자임을 나타낸다. (참고링크) https://stackoverflow.com/questions/6269765/
<덧셈 예제1>
>>node1 = tf.constant(3.0, tf.float32)>>node2 = tf.constant(4.0) # tf.constant(4.0, tf.float32)의 함축표현>>node3 = tf.add(node1, node2)>>print("node1: ", node1, "node2: ", node2)>>print("node3: ", node3)node1: Tensor("Const_1:0", shape=(), dtype=float32) node2: Tensor("Const_2:0", shape=(), dtype=float32)node1: Tensor("Add:0", shape=(), dtype=float32)>>sess = tf.Session()>>print("sess.run(node1, node2): ", sess.run([node1, node2]))>>print("sess.run(node3): ", sess.run(node3))sess.run(node1, node2): [3.0, 4.0]sess.run(node3): 7.0
<덧셈 예제2>
>>a = tf.placeholder(tf.float32) # 상수로 고정된 노드가 아닌 값이 변할 수 있는 노드 생성>>b = tf.placeholder(tf.float32)>>adder_node = a + b # tf.add(a,b)로 노드를 생성하는 것의 함축표현>>sess = tf.Session()>>print(sess.run(adder_node, feed_dict={ a: 3, b: 4.5 }))>>print(sess.run(adder_node, feed_dict={ a: [1, 3], b: [2, 4] })) # feed_dict를 이용하여 실행중에 노드의 값을 바꾼다.7.5[3. 7.]
# Tensorflow 메카니즘
1. TensorFlow operations을 사용해서 그래프를 build 한다.
2. 데이터를 주고 그래프를 실행시킨다. -> sess.run(op)
3. 그래프에서 변수들을 업데이트 시킨다. 혹은 결과 값을 반환한다.
# Tensor에 대한 정보
- Rank : 차원을 타나냄. (아래에서 t의 Rank는 2)
- Shape : 각각의 요소에 몇개씩 들어있느냐를 나타냄 (아래에서 t의 shape은 [3,3])
- Type : 요소가 무엇으로 구성되어 있는지를 나타냄 (보통은 tf.float32, tf.int32를 주로 사용함)
https://www.tensorflow.org/programmers_guide/dims_types
https://www.tensorflow.org/programmers_guide/dims_types