[ Tensorflow 예제 ] Multi-variable linear Regression을 Tensorflow에서 구현

2020. 12. 17. 19:57·🖥️ 컴퓨터공학 🖥️/머신러닝, 딥러닝
반응형

변수가 여러개 있는 Linear Regression

import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
# import문

x1_data = [73.,94.,89.,96.,73.]
x2_data = [80.,88.,91.,98.,66.]
x3_data = [75.,93.,90.,100.,70.]
y_data = [152.,185.,180.,196.,142.]

x1 = tf.placeholder(tf.float32)
x2 = tf.placeholder(tf.float32)
x3 = tf.placeholder(tf.float32)
y = tf.placeholder(tf.float32)

w1 = tf.Variable(tf.random_normal([1]), name= 'weight1')
w2 = tf.Variable(tf.random_normal([1]), name= 'weight2')
w3 = tf.Variable(tf.random_normal([1]), name= 'weight3')
b = tf.Variable(tf.random_normal([1]), name= 'bias')
hypothesis = x1*w1 + x2*w2 + x3*w3 + b

cost = tf.reduce_mean(tf.square(hypothesis - y))
optimizer = tf.train.GradientDescentOptimizer(learning_rate=1e-5)
train = optimizer.minimize(cost)

sess = tf.Session()

sess.run(tf.global_variables_initializer())

for step in range(2001):
    cost_val, hy_val,_ = sess.run([cost, hypothesis, train], 
feed_dict = {x1:x1_data, x2:x2_data, x3:x3_data, y:y_data})
    
    if step % 10 ==0:
        print(step,"Cost: ",cost_val, "\nPrediction: ",hy_val )

 

실행결과

 

feed_dict 옵션에 초기에 넣었던 데이터를 넣으니, 얼추 비슷하게 나오는 듯 하다. 2000번 실행한 결과, cost가 0이 아니므로 더 실행을 해야 y_data값고 일치할 것이다. 

 

 

Matrix를 이용한 다중선형회귀

import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
# tensorflow import

x_data = [[73.,80.,75.],[93.,88.,93.],[89.,91.,90.],[96.,98.,100.],[73.,66.,70.]]
y_data = [[152.],[185.],[180.],[196.],[142.]]
# 행렬 형태로 선언
# x_data는 [3,5], y_data는 [5,1] 행렬

x = tf.placeholder(tf.float32, shape=[None, 3])
y = tf.placeholder(tf.float32, shape=[None, 1])
# 행렬의 개수는 더 증가할 수 있으므로 None으로 설정

w = tf.Variable(tf.random_normal([3,1]), name = 'weight')
b = tf.Variable(tf.random_normal([1]), name = 'bias')

hypothesis = tf.matmul(x,w) + b
# 파이썬 행렬 곱 함수인 matmul, w*x를 의미함

cost = tf.reduce_mean(tf.square(hypothesis - y))
# cost함수 정의

optimizer = tf.train.GradientDescentOptimizer(learning_rate = 1e-5)
# 경사하강법 학습률은 10^-5

train = optimizer.minimize(cost)
# 비용을 최소화

sess = tf.Session()
sess.run(tf.global_variables_initializer())
# 변수 초기화

for step in range(2001): # 2001번 실행
    cost_val, hy_val, _ = sess.run([cost,hypothesis,train], feed_dict={x:x_data, y:y_data}) 
# 선형회귀모델에 x_data, y_data를 넣은 값을 cost_val, hy_val로 정의
    if step%10==0:
        print(step, "Cost: ",cost_val, "\nPrediction: \n", hy_val)
# 10번 주기로 step, cost값, 예측값을 출력
 

 

실행결과

 

확실하게 cost값이 줄어든 것을 알 수 있다. 또한 예측값이 y_data와 많이 가까워졌다.

728x90
반응형

'🖥️ 컴퓨터공학 🖥️ > 머신러닝, 딥러닝' 카테고리의 다른 글

[ 딥러닝 알아가기 ] 경사하강법, 역전파, SoftMax 함수  (0) 2020.12.24
[ tensorflow ] 간단한 선형회귀모델 만들기  (0) 2020.12.21
[ Tensorflow ] tf.constant, tf.placeholder, tf.Variable의 차이를 알아보자  (0) 2020.12.21
[ Tensorflow 예제 ] Linear Regression의 cost최소화의 Tensorflow 구현  (0) 2020.12.17
[ 딥러닝 알아가기 ] 선형회귀(Linear Regression)와 경사하강법  (0) 2020.07.25
'🖥️ 컴퓨터공학 🖥️/머신러닝, 딥러닝' 카테고리의 다른 글
  • [ tensorflow ] 간단한 선형회귀모델 만들기
  • [ Tensorflow ] tf.constant, tf.placeholder, tf.Variable의 차이를 알아보자
  • [ Tensorflow 예제 ] Linear Regression의 cost최소화의 Tensorflow 구현
  • [ 딥러닝 알아가기 ] 선형회귀(Linear Regression)와 경사하강법
공대생 배기웅
공대생 배기웅
군노답 미필 공대생 배기웅의 대학생활을 갈아 넣은 블로그
    반응형
  • 공대생 배기웅
    글쓰는공대생의 IT블로그
    공대생 배기웅
  • 전체
    오늘
    어제
    • 분류 전체보기 (166)
      • 🖊️ 공대생 글쓰기 🖊️ (17)
        • 공대생 회고록 (4)
        • 공대생의 끄적끄적 (4)
        • 슬기로운 공대생활 (9)
        • 무한도전 대학원생 (0)
      • 📈 산업공학 📈 (14)
        • 금융, 파생상품 (13)
        • 통계 (0)
        • 선형대수 (0)
        • 보험, 리스크관리 (0)
        • 재무회계 (1)
      • 🖥️ 컴퓨터공학 🖥️ (92)
        • 머신러닝, 딥러닝 (12)
        • 텐서플로우, 케라스 (1)
        • 알고리즘 (24)
        • 웹 (5)
        • Python (3)
        • C | C++ (23)
        • Java (15)
        • 코드 에러 모음집 (9)
      • 😙 취미, 교양 😙 (2)
        • 영어공부 (1)
        • 일본어회화 공부 (1)
      • 🔍 정보 공유 🔍 (38)
        • 대학생 외부활동 정보 (2)
        • 개발자관련 정보 (3)
        • 대입 논술 입시자료 정보 (22)
        • 프로그램 세팅 (11)
  • 블로그 메뉴

    • 홈
    • 방명록
  • 링크

  • 공지사항

    • [공지] 글쓰는 공대생입니다 😃
  • 인기 글

  • 태그

    프랜드함수
    Operator
    예외
    OOP
    조작자
    이클립스
    객체지향
    Java
    경제성공학
    acmicpc
    스캐너
    재귀함수
    자바
    C++
    equals프레임워크
    프로그래머스
    무작위 변수
    백준
    알고리즘
    데이터베이스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
공대생 배기웅
[ Tensorflow 예제 ] Multi-variable linear Regression을 Tensorflow에서 구현
상단으로

티스토리툴바