본문 바로가기

유니티 ML Agents/머신러닝과 강화학습 코딩

4. 텐서플로우 기본 예제

텐서플로우 기본 예제


단순한 곱하기 연산을 통해 텐서플로우 기본 구조를 알아보자. 텐서플로우에서 모든 데이터는 텐서 형태로 표현된다.


(1) 정수 6을 사용하기 위해 tf.constant 명령어를 사용해 상수형 텐서를 선언했다. 텐서플로우에서는 텐서에 이름을 지정할 수 있고 나중에 텐서보드에서 시각화에 사용된다.


(2) 6X7 연산을 만들기 위해 텐서플로우에서 제공하는 multiply 함수를 사용했다. 연산에 필요한 텐서를 인자로 넣고 이름을 지정했다.  (1)번과 (2)번 과정을 완료하면 그래프가 생성된다. 지금은 시각적으로 보이지 않지만 텐서플로우 내부적으로 그래프 구조가 자동적으로 생성된다.


(3) 이제 만들어진 그래프를 실행할 순서이다. 그래프를 실행하기 위해 필요한 세션 객체를 먼저 생성하고 (4) 세선 객체에서 제공하는 run함수를 사용해 그래프를 실행한다. run함수의 인자로는 실행해서 결과를 얻고 싶은 객체를 넣어주면 된다.


텐서플로우의 기본 구조를 보면 먼저 그래프 구조를 선언한 다음 세션 객체를 사용해 그래프를 실행하고 있다. 우리가 알고있는 C나 자바와 같은 언어와는 약간 구조가 다르다. 처음에 텐서플로우를 경험하는 사람은 다소 당황스러울 수 있지만 몇 개의 샘플 코드를 실행하다 보면 쉽게 익숙해 질 수 있다.


텐서보드 사용


텐서보드 설정


텐서보드를 사용하기 위해서는 먼저 명령어를 사용해서 텐서보드 프로그램을 실행해야한다. 윈도우 cmd 프로그램에서 rlearning 환경을 활성화 한 다음 (1) [tensorboard --logdir=./graph] 명령어를 입력하면 텐서보드 프로그램이 실행된다. logdir은 텐서보드 관련 정보를 저장하고 불러올 디렉토리를 지정하는 옵션인데 현재 [graph] 디렉토리를 지정했다. 프로그램에서도 동일하게 graph 디레토리에 관련 정보를 저장해야 한다.


(2) 텐서보드가 정상적으로 실행되면 cmd 화면 하단에 프로그램을 실행할 수 있는 주소를 확인할 수 있다


텐서보드 코딩


간단한 정보만 텐서보드에서 보기 원한다면 프로그램 마지막 부분에 [writer = tf.summary.FileWriter('./graph', sess.graph)] 한 줄만 추가해 주면 된다.

 

텐서보드 사용


텐서플로우 예제를 실행하고 텐서보드를 보면 위와 같이 그래프가 표시되는 것을 확인할 수 있다.


텐서플로우 행렬의 곱셈


텐서플로우 행렬의 곱셈


앞에서 텐서는 다차원 배열이라 언급했다. 앞서 살펴본 예제에서는 두 정수를 가지고 곱셈 연산을 했다. 이제 배열을 사용해서 곱셈 연산을 해 보자. 정수의 곱셈은 multiply 함수를 사용하지만 배열의 곱셈은 matmul 함수를 사용한다는 차이점이 있다. 프로그램을 실행하면 [[11 12] [25 26]]과 같은 결과를 볼 수 있다. 이는 예전에 학교에서 배운 행렬의 곱셈과 결과가 같다.