TigerCow.Door



안녕하세요.

이번 포스팅에서는 TensorFlow를 통해 간단한 Linear Regression을 구현해보도록 하겠습니다.


* 해당 포스트의 모든 내용은 김성훈 교수님의 '모두를 위한 딥러닝'을 바탕으로 제작되었습니다.

관련한 상세 내용은 아래 링크를 참고해주세요.

https://hunkim.github.io/ml/



1. Tensorflow 시작하기


지난 포스팅에서 윈도우 환경에서 tensorflow를 설치해보았습니다.

설치방법은 지난 포스팅을 참고하시면 좋을 것 같습니다.

먼저 다시 한번 tensorflow가 정상적으로 동작하는지 확인하겠습니다.

아나콘다를 실행시키고 아래 명령어를 통해 텐서플로우 가상환경을 실행합니다.


activate tensorflow


그리고 파이썬으로 들어가서 텐서플로우를 임포트합니다.


$ python

>>> import tensorflow as tf




그럼 이제 간단한 Linear Regression을 구현하겠습니다.



2. Linear Regression 구현하기


먼저, 우리는 hypothesis를 아래와 같은 식으로 나타냅니다.


H(x) = Wx + b


그리고 여기서 매우 간단하게 하기 위해 x와 y값을 아래와 같이 설정합니다.


x_train = [1,2,3]

y_train = [1,2,3]


그리고 W와 b를 Variable로 설정합니다.

근데 여기서 Variable은 프로그래밍에서 사용하는 변수와는 조금 다릅니다.

쉽게 생각해서 해당 Variable은 텐서플로우가 사용하는 Variable이다라고 생각하시면 됩니다.

다시 말해, 이를 실행하면 텐서플로우가 설정하게 되는 Variable이라는 것입니다.

우리가 이 Variable을 만들때 그 shape이 어떻게 되는지 함께 선언을 합니다.


그리고 처음 알아 본 것처럼 hypothesis 식을 함께 설정합니다.


또한 cost의 식도 함께 설정해줍니다.


위의 내용을 코드로 작성해보면 아래 사진과 같습니다.



여기서 제일 아래, reduce_mean이라는 것은 어떤 tensor가 주어졌을 떄 그에 대한 평균을 내주는 것입니다.


그럼 이제 cost까지 주어졌는데, 그 다음 작업은 cost를 최소화하는 작업입니다.

이는 일단 아래의 코드로 구현되는 것이라고 생각하시면 되겠습니다.



그럼 여기까지 해서 일단 그래프를 만들었습니다.

그리고 우리가 해줘야하는 것은 session을 만들어서 실행시켜줘야 합니다.



위의 코드처럼 작성합니다.

for문 아래에서 sess.run(train) 을 통해서 세션이 실행되고

총 2000천 반복중에서 20번 마다 우리가 보고 싶은 값을 출력하게 하였습니다.

이렇게 해서 아래와 같은 결과가 출력됩니다.



결과값을 보시면 처음에 나타나는 cost는 점점 작아지고, W값은 우리가 기대한 것과 같이 점점 1로 가까워 집니다.



3. Placeholders 이용하기


지난 시간에 했던 것처럼 처음에 직접 값을 넣지 않고, placeholder를 이용하여 나중에 값을 입력할 수 있습니다.

placeholder를 이용한 코드는 아래와 같습니다.



위의 코드를 보시면, 처음에 x_train, y_train으로 값을 주었던 것 대신에

placeholder를 통한 X, Y를 이용하며 뒤에서 feed_dict에서 값을 주는 것을 볼 수 있습니다.


이러한 코드에 의한 결과 값은 아까와 같이 cost가 점점 작아지고 w 값이 1에 가까워지는 결과와 동일합니다.



이러한 placeholder를 이용하면 우리가 linear regression을 만들고 학습을 할때 학습데이터를 우리가 원하는 값으로 넣어줄 수 있습니다.



전체적으로 정리를해보면

이번 포스팅에서는 tensorflow를 통해 Hypothesis를 만들어보았습니다.

그리고 placeholder를 이용하여 fedd_dict를 통해 우리가 원하는 값을 입력하고 그에 대한 값을 도출해 보았습니다.

다음 포스팅에서는 해당 linaer regression의 cost를 최소화하는 tensorflow를 구현해보도록 하겠습니다.



블로그 이미지

Tigercow.Door

Back-end / Python / Database / AI / Algorithm / DeepLearning / etc

댓글을 달아 주세요