본문 바로가기
무모한 도전-주식 인공지능 만들기

강화학습에 걸린 시간을 측정하기-코드가 실행에 걸린 시간의 측정 part1

by 인터넷떠돌이 2018. 12. 18.
반응형

안녕하세요?


지난번 포스팅에서 언급했다 시피, 이번에는 강화학습에 걸리는 시간이 얼마나 되었는지 정확하게 아는 것이 중요하기 때문에, 이를 측정하기 위한 시도에 들어가 보고자 합니다. 우선 원래는 1개의 포스팅에서 다 끝낼 수 있기도 하지만, 너무 내용이 길어지는 감이 있어서 부득이하게 2부분으로 나누어야 했습니다.



일단 작업을 위해서 time이라는 모듈과, strftime이라는 클래스를 가지고 오도록 합니다.



그래서 강화학습이 본격적으로 시작하는 곳에서는 타이머의 시작이 되는 strartTime이라는 변수를 시작시키도록 하고



위 스크린샷에서 나오는 것처럼 시작시간을 print()함수를 써서 나타나게 하고, 다음으로 걸린 시간을 표시하도록 합니다.




일단은 위 스크린샷처럼 모든 조건을 갖추어서 강화학습에 들어가 보도록 합니다.



일단 시간이 표시가 되기는 되었지만, 문제가 사람이 알아보기 상당히 힘든 형태로 되어 있다는 것을 알 수 있었습니다.



그리고 나서 이제서야 나오는 것이지만, 강화학습을 할 때마다 때때로 loss항목이 nan으로 나오는데, 그 원인을 이 블로그를 찾아주신 데이비드님이 제시한 해결책으로 해결할 수 있었습니다. 그래서 지금 이 자리를 빌어서 다시한번 감사합니다. 라고 감사를 표시하고 싶습니다.일단 loss를 계산하는 코드 바로 위에 x를 정의하는 코드를 위 스크린샷과 같이 배치를 하도록 합니다.



그렇게 하면, 지금까지 nan으로 나오던 항목이 제대로 loss의 값으로 계산이 되어서 나오는 것을 볼 수 있습니다. 이렇게 나오는 것 이전까지 제가 해결하지 못한 문제를 해결할 수 있게 되었습니다.




다시 시간을 측정하는 이야기로 돌아와서, 위 스크린샷에 보이는 것처럼 datetime이라는 것을 import하고, relativedelta라는 것을 사용해 보고자 합니다.



강화학습이 시작되는 곳은 별 차이가 없지만, 끝나는 곳은 위 스크린샷과 같이 차이를 주도록 합니다. 그렇게 해서, 둘 사이의 시간이 흐른 정도를 계산하리라 기대를 하였습니다만.....



어떻게 된 것인지 제대로 실행이 되지를 않고, 그냥 작동이 중지가 되는 것을 볼 수 있었습니다. 정확히는 기계학습은 들어갔는데, 이게 10에포크만 해서 다행이지, 1000에포크를 하고나서 이렇게 오류가 나서 프로그램이 종료되면, 정말 억울할 듯 했습니다. 아무튼 이 오류때문에 relativedelta는 그만 사용하고 다른 방법을 알아보러 가야 겠습니다.

반응형