안경잡이개발자

728x90
반응형

다변인 선형회귀를 활용한 배추 가격 예측 AI 개발하기 4강 - 저장된 학습 모델로 배추 가격 예측하기

나동빈


  지난 시간에는 다변인 선형회귀 기본 예제를 이용해 배추 가격을 예측하는 학습 모델을 만들어 보았습니다. 이번 시간에는 그렇게 저장된 학습 모델을 필요할 때 불러와서 즉시 배추 가격을 예측할 수 있도록 해보겠습니다.


※ 학습 모델을 저장하는 이유 ※


  학습 모델을 저장하는 이유는 간단합니다. 만약 학습 모델을 저장하지 않고 사용자로부터 배추 가격 예측 요청(Request)이 발생할 때마다 매 번 학습을 해서 결과를 돌려준다면 시간이 오래 걸리고 많은 리소스가 소모 될 것입니다.


  따라서 오프라인(Offline)에서 주기적으로 데이터를 이용해 학습을 진행한 뒤에, 그 결과를 저장해서 서버에서는 실시간 요청에 따라 이미 저장된 학습 모델로 배추 가격을 예측하는 것이 효율적입니다.


※ 배추 가격 예측 테스트 소스코드 ※


  따라서 실제 웹 서버의 기능을 구현하기 전에 간단히 배추 가격을 예측하는 테스트 소스코드를 작성해봅시다.


import tensorflow as tf

import numpy as np


# 플레이스 홀더를 설정합니다.

X = tf.placeholder(tf.float32, shape=[None, 4])

Y = tf.placeholder(tf.float32, shape=[None, 1])


W = tf.Variable(tf.random_normal([4, 1]), name="weight")

b = tf.Variable(tf.random_normal([1]), name="bias")


# 가설을 설정합니다.

hypothesis = tf.matmul(X, W) + b


# 저장된 모델을 불러오는 객체를 선언합니다.

saver = tf.train.Saver()

model = tf.global_variables_initializer()


# 4가지 변수를 입력 받습니다.

avg_temp = float(input('평균 온도: '))

min_temp = float(input('최저 온도: '))

max_temp = float(input('최고 온도: '))

rain_fall = float(input('강수량: '))


with tf.Session() as sess:

    sess.run(model)


    # 저장된 학습 모델을 파일로부터 불러옵니다.

    save_path = "./saved.cpkt"

    saver.restore(sess, save_path)


    # 사용자의 입력 값을 이용해 배열을 만듭니다.

    data = ((avg_temp, min_temp, max_temp, rain_fall), )

    arr = np.array(data, dtype=np.float32)


    # 예측을 수행한 뒤에 그 결과를 출력합니다.

    x_data = arr[0:4]

    dict = sess.run(hypothesis, feed_dict={X: x_data})

    print(dict[0])



  이후에 파일을 위와 같이 저장된 학습 모델 파일과 동일한 경로에 두고 실행하시면 됩니다.



  위와 같의 임의로 넣어 본 데이터에서 학습 결과를 정상적으로 출력한 것을 알 수 있습니다.


- 평균 온도: 10

- 최저 온도: -5

- 최고 온도: 20

- 강수량: 0.8


예측된 배추 가격: 5946원

728x90
반응형