Giter Club home page Giter Club logo

graduation-project's Issues

dqn, ddqn 리팩토링 필요

네트워크를 두 개 돌리는 부분을 dqnrunner에서 처리하는 게 아무리 생각해도 이상함
다른 알고리즘 구현하고 비교해도 일관성도 떨어지기 때문에 내부에 숨겨야 함.
근데 이러면 dqn 자체는 nn.Module을 상속한 게 아니게 됨.
그럼 runner에서 네트워크 저장 불러오기를 처리하는 것보다, 알고리즘의 메소드로 넣어두는 게 나을 듯.
그래도 runner는 필요한 게 왜냐하면 env를 알고리즘에 넣어버리면 결합도가 너무 높아질 것 같음.

모델 save/load 기능 추가

학습된 net의 state_dict을 저장하고 불러올 수 있어야 함.
모델을 통째로 저장하는 건 의존성이 너무 커서 부적절한 방법임.

https://tutorials.pytorch.kr/recipes/recipes/saving_and_loading_models_for_inference.html

음 일단 runner에 추가하고 run에서 _episode_loop를 _train_loop로 바꾸고 _play_loop를 추가해야 할 것 같음.

아니다 _episode_loop는 놔두고 _episode_prepare에서 저장한 모델을 불러오는 함수를 호출하는 게 나을 듯.
_episode_sim 을 train_sim과 play_sim으로 분리해서 학습 하지 않는 분기를 만들자

recorder 재작성 필요함

index가 1부터 시작하는 게 아니고 지나간 에피소드는 녹화할 수가 없는 것이었다.
원래 index + 1로 줘서 시뮬을 한 번 더 돌려야 녹화되는 거였고... 어쩐지 이상하더라

비디오 녹화시 발생하는 Warning 문제

warning이 거슬리는 부분만 빼면 급한 문제는 아님.

\lib\site-packages\pyglet\image\codecs\wic.py:289: UserWarning: [WinError -2147417850] 
스레드 모드가 설정된 후에는 바꿀 수 없습니다 
warnings.warn(str(err))

recorder 오버헤드 문제

score를 보고 episode를 저장하려면 어쨌든 지속적으로 frame capture를 해야함. 이게 생각보다 오버헤드가 큼.
그래서 최근 n개 평균 점수가 얼마 이상인 경우 전부 저장하도록 recorder를 활성화하고, simulation 후에 일정 점수에 미달하는 video를 제거하는 방향으로 구현해야 함.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.