안녕하세요. 위기의코딩맨입니다.
오늘은 TensorFlow Linear Regression에 대해 알아보도록 하겠습니다.
[ Linear Regression ]
간단하게 설명하면 변수들의 사이의 관계를 분석하는데 사용되는 통계학적인 방법을 의미합니다.
학습을 해당 수식으로 표현하는 알고리즘으로,
y는 타겟데이터, x는 인풋데이터, W와 b는 파라미터로 진행됩니다.
학습한 가설을 바탕으로 테스트 데이터에 대해서 예측을 할 수 있습니다.
예제를 통해 알아보도록 하겠습니다.
import tensorflow as tf
#파라미터 설정 차원을 1개로
W = tf.Variable(tf.random.normal(shape=[1]))
b = tf.Variable(tf.random.normal(shape=[1]))
#Liear Regression / 1.가설정의
def Linear_Model(x):
return W*x +b
#2.손실함수 정의
def MES_LOSS(Y_Pred, Y):
return tf.reduce_mean(tf.square(Y_Pred-Y))
#3.최적화 Optimizer
Optimizer = tf.optimizers.SGD(1e-2)
def Training_Step(x,y):
with tf.GradientTape() as tape:
#예측 결과 값
Y_PRED = Linear_Model(x)
#실제 예측 결과 값과 차이
LOSS = MES_LOSS(Y_PRED, y)
#갱신
gradient = tape.gradient(LOSS, [W,b])
Optimizer.apply_gradients(zip(gradient, [W,b]))
#Training Data
X_T = [2,4,6,10]
Y_T = [4,8,12,20]
# 1000번의 학습
for i in range(1000):
Training_Step(X_T, Y_T)
X_Test = [5, 10, 2, 20]
print(Linear_Model(X_Test).numpy())
출력 값을 확인해보면
X_T, Y_T의 Training Data를 통해 두 값의 관계를 파악하여
X_Test의 값 5, 10, 2, 20에 그 파악된 관계를 학습한 결과를 출력된 것을 확인할 수 있습니다.
여기서 중요한 점은 3개의 단계를 거쳐서 결과를 출력한 것을 알아야합니다.
1. 가설정의
2. 손실함수
3. 최적화
해당 단계는 거의 모든 머신러닝의 기본형태를 유지하기 때문에 꼭 알아두셔야합니다.
가장 기본적인 머신러닝의 Liear Regression을 사용하여 간단하게 변수들의 사이를 분석하여
해당 관계를 알아내어 TestData에 적용하여 결과를 적용해보는 예제를 작성해보았습니다.
'Python > Tensorflow' 카테고리의 다른 글
[We-Co] Softmax regression MNIST 예제 - Tensorflow (0) | 2021.10.01 |
---|---|
[We-Co] Softmax Regression, Cross-Entropy, One-Hot-Encoding - TensorFlow (0) | 2021.09.27 |
[We-Co] TensorFlow 변수,상수선언과 Session() (0) | 2021.07.22 |
[We-Co] random_normal(), random_uniform() 난수텐서 초기화 (0) | 2021.07.22 |
[We-Co] zeros, ones, fill 상수텐서 초기화 (0) | 2021.07.21 |