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

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

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

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

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

 

 

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

   개념적인 부분은 하기 링크에 정리 되어있습니다!

https://limitsinx.tistory.com/31

 

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

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

limitsinx.tistory.com

[코드 전문]

import numpy as np

import tensorflow as tf

 

x_train = [1234]

y_train = [0, -1, -2, -3]

 

tf.model = tf.keras.Sequential()

# units == output shape, input_dim == input shape

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

 

sgd = tf.keras.optimizers.SGD(lr=0.1)  # SGD == standard gradient descendent, lr == learning rate

tf.model.compile(loss='mse'optimizer=sgd)  # mse == mean_squared_error, 1/m * sig (y'-y)^2

 

# prints summary of the model to the terminal

tf.model.summary()

 

# fit() executes training

tf.model.fit(x_train, y_train, epochs=200)

 

# predict() returns predicted value

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

print(y_predict)

 

 

[코드 분석]

x_train과 y_train 값들을 넣고 학습시켜서 예측해보는 코드입니다.

수식을 보니 y=-x+1이라는 선형식으로 트레이닝 데이터를 주고, 예측치가 잘맞는지 확인해보는 코드네요

 

① tf.model = tf.keras.Sequential() : 여기서 밑에 코드부터 모델링을 진행하겠다! 라는 뜻입니다.

 

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

: 머신러닝 모델의 input갯수가 1개씩들어오죠??

 

1,2,3,4 차례대로 한개씩.. output도 0,-1,-2,-3 한개씩 차례대로 나옵니다.

즉, 한번에 들어가는 갯수는 1개 결과로 나오는 값도 1개인거죠 

 

units = 1 : output으로 나오는 갯수

input_dim : input으로 들어가는 변수 갯수

 

입니다.

 

③ sgd=keras.optimizers.SGD(lr=0.1)

: Tensorflow1 부터 같이 공부해오신분들은, 대충 이것만 봐도 뭔지 아실꺼에요

Standard Gradient Descent로 cost function을 Optimizing 할것이며, Learning_rate는 0.1로 두겠다는 뜻입니다.

 

④ tf.model.compile(loss='mse',optimizer=''sgd')

Cost(loss) function은 Mean square Error(MSE)로, optimizer는 위에서 정리한 SGD로 하겠다는 코드입니다.

 

⑤ tf.model.summary()

: 이건 그냥 학습에 도움되는 코드는 아니고, 그냥 모델이 어떻게 생겼는지 터미널에 보여주는 코드입니다.

요런식으로 터미널창에 전체적인 Summary를 보여줍니다.

 

⑥ tf.model.fit(x_train,y_train,epochs=200)

 

요부분이, Tensorflow1에서 sess.run()하고, feed_dict={x:x_train, y:y_train} 해주던 부분입니다.

 

확실히 Tensorflow2로 오면서 코드가 간결해지긴 했습니다.

 

x_train과 y_train데이터로 200번의 학습을 진행한다는 뜻입니다.

※epoch : input layer부터 output layer까지 Forward, Backward를 진행하는것

 

[결과값(200번 학습)]

이런 결과값이 나오네요

 

5와 4를 input으로 넣었으면 y=-x+1에 해당하는 데이터들로 학습을 시켰으니, -4와 -3이 나오는게 가장 이상적인 학습결과겠죠??

 

200번 정도 학습시키니, -3.9979, -2.9989로 거의 정확한 값이 나오는것을 확인하실 수 있습니다!

 

 

댓글