관리 메뉴

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


반응형
Comments