글 수 222
seq2seq모델을 이용해서
챗봇을 개발하려고 합니다.
그런데 서비스화하려고 생각해보니
보통 구현들이
train을 돌리고 test가 합쳐져있는데
저는 train코드와 test코드를 분리해서
train코드에서 생성된 모델을
teat코드를 이용해 서비스에서 사용하고 싶습니다.
하지만 이런식으로 train과 test분리된 자료가 없어
분리하는 방법을 모르겠습니다..
선형회귀 모델을 예로들면
train.py에서 학습을 진행하고 모델을 저장해서
test.py에서 모델을 로드에서 model.predict(x,y)하는 방식이 쉽게 적용되는데
seq2seq는 어떤식으로 분리하여 개발할 수 있을까요 ?
간단한 seq2seq 예제들은 훈련 모델을 그대로 사용해서 예측을 하기도 합니다. 예측시 입력을 [Start, Pad, Pad, ...] 이런 식으로 패딩을 넣어서 한 번에 모든 타임스텝을 돌립니다. 사실 이렇게 하면 안되고 훈련과 예측 모델을 별도로 구현해야 합니다.
훈련시에는 LSTM에서 모든 타임스텝을 한 번에 자동으로 진행합니다. 반면에 예측시에는 LSTM을 타임스텝 1번씩만 돌립니다. 그리고 그 결과를 저장해서 새로 LSTM을 초기화하고 다음 타임스텝을 반복적으로 실행합니다. 이렇게 해야만 이전 타임스텝의 출력 단어를 다음 타임스텝의 입력으로 넣을 수 있습니다.
http://aidev.co.kr/chatbotdeeplearning/7921
위의 예제는 훈련과 예측 모델을 분리하여 구현했습니다. 참고하시기 바랍니다.