728x90

Tensorflow는 현존하는 머신러닝 프레임워크 중 가장 유명한 프레임 워크이다.

필자가 딥러닝을 배우기시작하면서 선택한 프레임워크인데 생각보다 어렵지는 않다.


그러나 필자가 블로그에 포스팅 하는 부분들 중에서는 거의 해본적없는 분야이고

빨리 빨리 바뀌기에 이 포스터는 항상 맞을수 없다고 볼 수 있다.

그러기 때문에 읽는 입장에서 그 부분을 고려해서 읽길 바란다.


이 포스터는 Python3.6으로 Tensorflow1.2로 테스팅 했으며 작업환경은 PyCharm이며 특별한 경우가 아니면 쉘에서 실행하지 않음.


Tensorflow 예제


import tensorflow as tf

a = tf.constant(5,name='input_a')
b = tf.constant(7,name='input_b')

c = tf.multiply(a,b,name='mul_c')
d = tf.add(a,b,name='add_d')
e = tf.add(c,d,name='add_e')

sess = tf.Session()
print(sess.run(e))


위의 코드는 정말 간단한 예제이다.

사실 영어만 읽을줄 안다면 위의 예제는 이해하는데 아예 무리가 없다.

또한 실행결과 역시 예측할 수 있다.


모두가 예측했겠지만 결과는 47이 나온다.


혹시라도 과정을 모르겠다면 과정에 대해서 설명을 해주겠다... 의미있는지는 모르겠다.


multily는 곱셈이다. 따라서 5*7=35이다.

add는 덧셈이다. 따라서  5+7=12이다.

35+12를 하면 47이다.


이 과정은 총 3가지의 과정으로 나눠져 있이며 각각의 섹션으로 간단히 설명하겠다.


상수의 선언


상수의 선언 메소드는 아래와 같다.


def constant(value, dtype=None, shape=None, name="Const", verify_shape=False)


값은 반드시 적어야 하며 나머지는 디폴트 매개변수 처리가 되어있다.

이 메소드의 효력은 심플하게도 상수 하나를 선언하는 것이다.

위의 예제에서는 상수 5와 7을 선언하는 예제인 것이다.


명령(Op)의 선언


말그대로 연산할 명령의 선언이다. 그러나 이 명령이 바로 실행되는 것이 아니라 일종의 연결상태가 된다.

위의 예제에서 명령은 총 두개가 사용되었다


def multiply(x, y, name=None)

def add(x, y, name=None)


뭐 연산자는 이것만 있는게 아니라 더 많다. 정말 당연한 이야기지만...

교재에서 multiply가 아니라 mul이라고 되어있는 경우가 있는데 mul이라는 메소드는 현버전에 없다.

이유는 모르겠다. 그런데 나눗셈은 div라는 이름으로 남아있고 뺄셈은 subtract로 남아있다. 좀 일관성이 없는 것 같다.


세션으로 결과보기


난 세션이라는것을 뭐라고 설명할지 조금 애매하다.

솔직히 뭐를 정확히 세션이라하는지는 아직도 잘 모른다. 웹에서도 왜 세션이라 부르는지 모르겠다.

세션의 뜻은 접속인데 설명을 뭐라고 해야할지 모르겠다.

여기서의 세션은 이때까지 만든 노드(텐서)들의 총 집합이라고 생각하면된다.

위에도 말했지만 위의 명령들을 선언했다고 아직 실행된건 아니고 연결되있는 상태이며 이를 세션을 만든 후 실행해야 결과를 볼 수 있다.


확실한건 결과를 보기위해서는 세션이 필요하다는 것이다.

세션을 만드는 메소드는  아래와 같다.


sess = tf.Session()


이제 세션을 실행하면 원하는 노드 지점을 선택해서 run을 하면된다.

쉘에서는 그냥 run만해도 값을 볼 수 있짐나 우리는 IDE에서 소스코드를 작성하고 있으므로 결과를 보려면 print함수를 사용해야한다.


print(sess.run(e))


위 코드의 결과로 값은 세션은 실행된다.

세션의 실행으로 위의 상수의 선언부터 각각의 명령어 까지 순차적으로 꼬리에 꼬리를 물고 실행하게 되며 최종적으로

우리가 실행시킨 e노드까지의 값을 볼 수 있다.


정말 실행결과가 우리가 의도한대로 나오는지는 아래를 확인해보자



이제 간단한 텐서플로우 예제를 만들어 보았다.

도중 도중 복잡한 알고리즘 들이 나오긴하지만 어려운건 없다.

이제 차근차근 알아나가보자


+ Recent posts