본문 바로가기
Developer/Machine Learning

#3. TensorFlow 기본 구문

by Doony 2017. 11. 16.

본 포스팅은 인프런에서 제공되는 "모두를 위한 딥러닝 - 기본적인 머신러닝과 딥러닝 강좌"를 참고하여 만들어졌습니다. 

인프런 URL: https://www.inflearn.com/


오늘은 Tensorflow의 기본적인 사용법에 대해서 알아보자.

tensorflow는 기본적으로 파이썬을 통해 구동한다고 한다. 고로 파이썬 설치가 되어 있어야하며, 기타 필수 프로그램 및 tensorflow 설치 방법은 아래 글을 참조하도록 하자

#2. TensorFlow 설치 - GPU



  TensorFlow 기본 사용방법

Tensorflow는 라이브러리다. 즉, 기본 문법이 아니라 어디선가 따와서 써야한다는 것. 고로 파이썬에서 바로 구문을 입력하기 전에, import 하여 가져오는 과정이 필요하다.

import tensorflow as tf

텐서플로우 라이브러리를, tf 라고 줄여서 가져와 쓰겠다는 뜻.

텐서는 지난강의 때, data array라고 배웠고, tensorflow는 말 그대로, 그런 데이터의 흐름을 보여주는 것이라 이해하였다. 즉 데이터들의 그래프화? 가시화라고도 볼 수 있고, 거기에 node와 edge라는 개념이 있었다. (node: 데이터, edge: 데이터 어레이 즉 텐서.)


예제 1. 문장 출력하기

import tensorflow as tf            #텐서플로우 가져오기

hello = tf.constant("hello tensorflow~~")                #hello라는 변수에, constant. 즉 상수(문자)를 저장.

sess=tf.Session()                #텐서플로우 세션을 시작하겠다라는 sess 선언

print(sess.run(hello))                #앞에 sess를 붙이고, 헬로우를 실행한 것을 프린트.

결과: hello tensorflow~~

(간혹 앞에 b가 붙기도 하는데, 이는 byte literal 이라는 뜻이고, 잘 실행되고 있으니 걱정할 것 없다고 한다)



예제 2. 숫자 더하기 (add)

import tensorflow as tf

sess=tf.Session()

node1 = tf.constant(3.0, tf.float32)                #node1에 3.0이라는 상수.

node2 = tf.constant(4.0)   

node3 = tf.add(node1, node2)                    #node3는 node1과 node2의 합.

print("sess.run(node1, node2): ", sess.run([node1, node2]))            #2개를 프린트. 앞에 "가 있으면 텍스트로 출력, 뒤에는 node1, node2를 출력

print("sess.run(node3): ", sess.run(node3))            #node3을 출력

결과: 3.0, 4.0 // 7.0



예제 3. 숫자 나중에 더하기 (placeholder, feed_dict)

import tensorflow as tf

sess=tf.Session()

a=tf.placeholder(tf.float32)            #어떤 값을 holding하겠다고 하고, 변수자체만 저장하기

b=tf.placeholder(tf.float32)    

adder_node = a+b                #adder_node라는 변수는 a+b

print(sess.run(adder_node, feed_dict={a: 3, b: 4.5}))             #feed_dict로 위에서 holding 한 a, b에 값 넣기

print(sess.run(adder_node, feed_dict={a:[1,3], b:[2,4]}))                #a, b가 행렬의 형태일 수도.




마지막으로 Tensorflow에서 알아두어야 할 것이, rank, shape, 그리고 data type이 있다. 예시로 시작하는게 빠르다.

a= { [1 2 3 4],     [1 2 3 4],     [1 2 3 4] } 

이런 수가 있다고 했을 때,

rank: 스칼라, 벡타, 매트릭스 차원의 의미. 즉, 위는 3랭크라고 볼 수 있다.

shape: 한 괄호 안에 수가 몇개냐. 위는 4 shape라고 볼 수 있음.

이때 rank, shape을 (3 4) 또는 [3, 4] 라고 표현함.

data type의 경우, 위 예제에서도 나온 float32나 int32가 많이 쓰임. 말 그대로 데이터의 타입, 즉 종류를 나타내는 말.




공감은 큰 힘이 됩니다.

두니월드로 놀러오세요.

댓글