본문 바로가기
DeepLearning Framework & Coding/Tensorflow 2.X

[코드로 이해하는 딥러닝2-2] - 다중선형회귀(Multiple Linear Regression)

by 노마드공학자 2021. 1. 6.

※ Tensorflow1문법을 2로만 바꾸는것이기에, 코드분석 위주로 진행하고있습니다.

[Tensorflow1 링크종합] https://limitsinx.tistory.com/50

 

 

※ 이 전글에서 정리한 코드/문법은 재설명하지 않으므로, 참고부탁드립니다.

코드만 해석하고 넘어가기에 다소 불친절한 글 일수 있습니다..

   개념적인 부분은 하기 링크에 따로 정리해두어, 참조 부탁드립니다.

https://limitsinx.tistory.com/32

 

[코드로 이해하는 딥러닝 5] - 다중선형회귀(Multiple Linear Regression)

[코드로 이해하는 딥러닝 0] - 글연재에 앞서 https://limitsinx.tistory.com/27 [코드로 이해하는 딥러닝 1] - Tensorflow 시작 https://limitsinx.tistory.com/28 [코드로 이해하는 딥러닝 2] - Tensorflow 변..

limitsinx.tistory.com

 

[코드 전문]

 

import tensorflow as tf

import numpy as np

 

x_data = [[73.80.75.],

          [93.88.93.],

          [89.91.90.],

          [96.98.100.],

          [73.66.70.]]

y_data = [[152.],

          [185.],

          [180.],

          [196.],

          [142.]]

 

tf.model = tf.keras.Sequential()

 

tf.model.add(tf.keras.layers.Dense(units=1input_dim=3))  # input_dim=3 gives multi-variable regression

tf.model.add(tf.keras.layers.Activation('linear'))  # this line can be omitted, as linear activation is default

 

tf.model.compile(loss='mse'optimizer=tf.keras.optimizers.SGD(lr=1e-5))

tf.model.summary()

history = tf.model.fit(x_data, y_data, epochs=100)

 

y_predict = tf.model.predict(np.array([[72.93.90.]]))

print(y_predict)

 

[코드 분석]

이전글에서는 1개의 input에 1개의 output이 대응되는 SISO(Single Input Single Output) 시스템을 학습해보았는데요

 

이번에는 MISO(Multi input Single Output)에 대해 구현한 코드입니다.

 

73,80,75 라는 input을 넣을때 152가 나오도록 학습을 시키는 코드로써, 자세한 설명은 해당글 최상단 링크 확인부탁드립니다.

 

① tf.model.add(tf.keras.layers.Dense(units=1, input_dim=3))

: input이 3차원데이터이므로, input_dim=3 이고 output은 1개가 나가므로, units=1로 작성한 코드입니다.

 

② tf.model.add(tf.keras.layers.activation('linear'))

: 이부분은 굳이 작성을 안해줘도 default로 Linear가 들어가는데요,

앞으로 다루겠지만 activation function은 linear,sigmoid,reLU,softmax등 엄청나게 많습니다.

이중 어떤것을 쓰겠다고 선언해주는 구문입니다.

 

③ tf.model.compile(loss='mse', optimizer=tf.keras.optimizers.SGD(lr=1e-5))

: Standard Gradient Descent로 Learning_rate은 0.0001, cost function은 Mean square Error로 잡겠다는 기본적인 코드

 

이렇게 학습시키고 나서, 72,93,90 이라는 값을 넣었을때는 어떤 Y값이 나올까?? 를 예측하는것이 문제입니다.

 

 

[결과값]

167.95라는 숫자로 예측을 하는것을 확인하실 수 있습니다.

 

training data가 몇개되지않기때문에 학습횟수를 늘려도 크게 차이가 나진 않습니다.

 

이번에는 100번정도 학습을 시켜봤구요, Loss는 0.85정도로 꽤나 낮은것을 보여주고 있습니다.

댓글