Linear Regression TensorFlow로 구현

업데이트:

본 글은 모두를 위한 머신러닝/딥러닝 강의를 참고하여 작성하였습니다.
소스 코드는 DeepLearningZeroToAll를 참고 하여 작성하였습니다.

ML lab 02 - TensorFlow로 간단한 linear regression을 구현

Linear Regression의 개념에서 다루었던 내용을 TensorFlow로 구현해 보겠습니다.

먼저, 우리는 가설을 세워야 합니다.
가설은

\[H(x) = Wx + b\]

입니다.

오늘 실습에서는 $W$와 $b$ 값에 랜덤한 값을 설정하여 사용해 보겠습니다.

Build graph using TF operations

여기서, numpy는 선형대수학에 특화 된 라이브러리 입니다.

import numpy as np
import tensorflow as tf
x_train = [1, 2, 3, 4]
y_train = [0, -1, -2, -3]

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

keras는 여러 층을 연결 및 조합하여 모델을 만드는 머신러닝 기법으로,
층을 쌓고 연결시켜주는 것이 이 Sequential 입니다.

Dense는 입력된 값을 연산시켜주는 장치로서,
units은 출력 데이터의 shape
input_dim은 입력 데이터의 shape
을 나타냅니다.

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

SGD의 경우 확률을 이용하여 최적의 값을 찾아가는 방법으로,
lr은 학습률로,
값이 크면 빠르게 학습하지만, 최적의 값을 찾기 힘듭니다.
값이 작으면 느리게 학습하지만, 효율적인 값을 찾을 수 있습니다.

tf.model.compile(loss = 'mse', optimizer = sgd)
tf.model.summary()
Model: "sequential"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
dense (Dense)                (None, 1)                 2         
=================================================================
Total params: 2
Trainable params: 2
Non-trainable params: 0
_________________________________________________________________
tf.model.fit(x_train, y_train, epochs = 2000)

epoch는 모델 학습에 데이터를 적용시키는 횟수로,
100으로 설정 하면, 모델에 데이터를 100번 사용하여 학습한다고 이해하면 됩니다.

y_predict = tf.model.predict(np.array([5, 4]))
print(y_predict)
[[-3.9999998]
 [-2.9999998]]

댓글남기기