레플리
글 수 203

텐서플로우로 선형 회귀 구현

조회 수 1360 추천 수 0 2017.03.09 12:09:08


https://cpuu.postype.com/post/161789/

 

 

 

선형 회귀(Linear Regression)은 데이터를 통해 1차 방정식인 직선을 구하고 이 모델을 사용하여 입력에 대한 출력을 예측하는 기계학습의 한 종류입니다.

 

 

 

LPyvLJmU5l32mbi0wZU8vVnuwIcGOlLsZMypaTePR4D6V6dU4laZac9D13tXf0Zgmg3HP3fhxLQNDcxnlSXCgvsl8IhzLg3kY1Fgm8H8O1LhGDl4FQ.png

 

예를 들어, 어떤 제품의 (예약대수, 판매대수)에 대한 데이터가 있다고 하면 회귀 분석을 사용하여 위와 같은 직선의 a와 b의 값을 구할 수 있습니다. 그리고 이 공식으로 특정 예약대수일때의 판매대수를 예상할 수 있습니다.

 

 

 

예측에 따른 오차를 계산하기 위해 비용 함수(Cost Function)를 사용합니다. 그리고 이 비용 함수가 최소가 되도록, 다시 말해 오차가 적은 모델을 생성해야 합니다. 경사 하강법으로 비용 함수가 최소가 되는 x를 찾을 수 있습니다.

 

f4caacedc8b1e8b2092d5b2ec0edf64d.png

 

선형 회귀의 비용 함수는 위와 같습니다. h는 가설(hypothesis)로서 h(x)는 y(x)와 동일합니다. 데이터의 y값과 직선의 y값의 거리를 평균한 것인데 이 값이 작을 수록 오차가 낮다는 것을 의미합니다.

 

 

 

텐서플로우로 선형 회귀를 구현한 코드는 아래와 같습니다.

 

-------------------------------------------------------------

import tensorflow as tf

 

# 데이터 집합

x_data = [4.0391, 1.3197, 9.5613, 0.5978, 3.5316, 0.1540, 1.6899, 7.3172, 4.5092, 2.9632]

y_data = [11.4215, 10.0112, 30.2991, 1.0625, 13.1776, -3.1976, 6.7367, 23.8550, 14.8951, 11.6137]

 

# W, b 매개변수를 랜덤하게 초기화

W = tf.Variable(tf.random_uniform([1], -5.0, 5.0))

b = tf.Variable(tf.random_uniform([1], -5.0, 5.0))

 

# X, Y를 플레이스홀더로 설정

X = tf.placeholder(tf.float32)

Y = tf.placeholder(tf.float32)

 

# 가설 변수 설정

hypothesis = W * X + b

 

# 비용 함수 설정

# reduce_mean은 평균값을 구하는 함수

cost = tf.reduce_mean(tf.square(hypothesis - Y))

 

# 경사 하강법으로 비용 함수가 최소가 되는 W, b 변수를 학습

# 학습률은 0.01로 설정

a = tf.Variable(0.01)

optimizer = tf.train.GradientDescentOptimizer(a)

train = optimizer.minimize(cost)

 

init = tf.initialize_all_variables()

 

sess = tf.Session()

sess.run(init)

 

# 2001번 학습 반복

for step in xrange(2001):

    sess.run(train, feed_dict={X:x_data, Y:y_data})

    if step % 20 == 0:

        print step, sess.run(cost, feed_dict={X:x_data, Y:y_data}), sess.run(W), sess.run(b)

 

# 학습된 모델로 x = 5일때 예측

answer = sess.run(hypothesis, feed_dict={X:5})

print 'When X=5, hypothesis = ' + str(answer)

-------------------------------------------------------------

List of Articles
제목 글쓴이 날짜sort 조회 수
이젠 모델 구축도 학습도 필요없다, OpenAI의 이미지인식 모델 CLIP file 깊은바다 2021-03-07 4331
사진 한 장으로 움직이는 얼굴을 만드는 사이트 - Deep Nostalgia 깊은바다 2021-03-01 4265
톰 크루즈의 딥페이크 영상 file 깊은바다 2021-02-28 669
문장을 사진으로 변환하는 GPT-3 모델, DALL-E 깊은바다 2021-01-09 983
GAN으로 만든 얼굴을 테스트할 수 있는 뉴욕타임스의 기사 file 깊은바다 2020-11-24 678
알렉스넷과 Seq2Seq의 창시자 일리야 수츠케버(Ilya Sutskever) 깊은바다 2020-11-17 829
GAN을 이용한 염색 및 헤어 스타일 합성 - 꽤 GAN찮은 헤어살롱 깊은바다 2020-10-29 2816
GAN의 상용화를 알리는 시작 - 포토샵 뉴럴 필터 깊은바다 2020-10-22 884
이미지 생성모델에서 특징 벡터를 추출하여 사진을 조작하는 방법 file 깊은바다 2020-10-09 1563
파이토치 버전 YOLO Colab 테스트 코드 file 깊은바다 2020-09-25 596
앤드류 응의 YOLO 강의 영상 깊은바다 2020-09-23 833
사진을 디즈니 만화로 바뀌주는 딥러닝 모델 - Toonify 깊은바다 2020-09-21 1340
AI 없이 힘낼 수 없는 엔비디아 지포스 RTX - 딥러닝 DLSS 기술 깊은바다 2020-09-07 517
3초 분량의 100만개 동영상 데이터셋 - Moments in Time 깊은바다 2020-09-05 568
사진을 복원하는 딥러닝 모델 - DFDNet 깊은바다 2020-08-24 1223