[인공지능] 텐서플로우 - 1에서 10까지 예측 모델 구하기(선형회귀)

소개

  • 안녕하세요. 오늘부터 텐서플로우를 학습하면서 틈틈히 공부한 내용과 예제 코드들을 블로그에 정리하려고 합니다.
  • 자세한 알고리즘 부분까지는 알지 못하고, 간단히 텐서플로우, 케라스를 통한 모델 학습 및 검증, 추론 정도만 하는 것이 저의 목표 이기 때문에 이 부분에 도달할 때까지 포스팅 하려고 노력 하겠습니다.
  • 오늘은 첫 번째로, 가장 기본중에 기본인 1에서 10까지 값을 예측하는 모델을 구하는 예제 코드를 작성해 보려고 합니다.
  • 바로 예제 코드를 작성해 보겠습니다.

텐서플로우 설치

  • 텐서플로우 예제 코드는 Python으로 작성할 것입니다.
  • 선행적으로 텐서플로우를 우선 설치 진행해야 합니다.
  • 설치 방법은 커맨드(cmd) 창을 열어서 pip install tensorflow 라고 입력하여 설치 진행합니다.


예제 코드

  • 다음 예제 코드는 1에서 10까지의 input 데이터가 있고, 출력값이 그대로 1에서 10까지의 데이터를 예측하도록 하는 예제 코드입니다.
import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt

from tensorflow import keras

# 학습데이터 준비
x = np.array([1,2,3,4,5,6,7,8,9,10])
y = np.array([1,2,3,4,5,6,7,8,9,10])

# Keras의 Sequential모델을 선언
model = keras.Sequential([
    # 첫 번째 Layer: 데이터를 신경망에 집어넣기
    keras.layers.Dense(32, activation='relu', input_shape = (1, )),
    # 두번째 층 
    keras.layers.Dense(32, activation='relu'),
    # 세번째 출력층: 예측 값 출력하기
    keras.layers.Dense(1)
])

# 모델을 학습시킬 최적화 방법, loss 계산 방법, 평가 방법 설정
model.compile(optimizer='adam',loss='mse',metrics=['mse', 'binary_crossentropy'])
# 모델 학습
history = model.fit(x,y, epochs = 500, batch_size = 100)

print(model.predict([3]))
print(model.predict([5]))

# 결과를 그래프로 시각화
plt.scatter(x, y, label='y_true')
plt.scatter(x, model.predict(x), label='y_pred')
plt.legend()
plt.show()

실행 결과

  • 실행 결과 학습이 정상적으로 이루어진 것을 확인할 수 있습니다.
  • 또한, model.predict 값에 3하고 5를 예측하니까 3.022, 5.011 로 값 예측도 정상적으로 된 것을 확인할 수 있습니다.
...
...
Epoch 499/500
1/1 [==============================] - 0s 5ms/step - loss: 3.6725e-04 - mse: 3.6725e-04 - binary_crossentropy: -68.6216
Epoch 500/500
1/1 [==============================] - 0s 3ms/step - loss: 3.5811e-04 - mse: 3.5811e-04 - binary_crossentropy: -68.6216
[[3.0229688]]
[[5.011372]]

728x90

이 글을 공유하기

댓글

Designed by JB FACTORY