GithubHelp home page GithubHelp logo

rlcode / reinforcement-learning-kr-v2 Goto Github PK

View Code? Open in Web Editor NEW
116.0 11.0 94.0 23.13 MB

[파이썬과 케라스로 배우는 강화학습] 텐서플로우 2.0 개정판 예제

License: MIT License

Python 100.00%

reinforcement-learning-kr-v2's Introduction


파이썬과 케라스로 배우는 강화학습 개정판의 코드입니다.

Maintainers - 이웅원, 양혁렬

Pull Request는 언제든 환영입니다. 문제나 버그, 혹은 궁금한 사항이 있으면 이슈에 글을 남겨주세요.

필요한 라이브러리들 (Dependencies)

  1. Python 3.6
  2. Tensorflow 2.1.0
  3. numpy 1.17.0
  4. gym 0.16.0
  5. pillow 6.1.0
  6. matplot 3.1.1
  7. scikit-image 0.15.0

설치 방법 (Install Requirements)

pip install -r requirements.txt

목차 (Table of Contents)

Grid World - 비교적 단순한 환경인 그리드월드에서 강화학습의 기초를 쌓기

CartPole - 카트폴 예제를 이용하여 여러가지 딥러닝을 강화학습에 응용한 알고리즘들을 적용해보기

Atari 브레이크아웃 - 딥러닝을 응용하여 좀더 복잡한 Atari 브레이크아웃 게임을 마스터하는 에이전트 만들기

reinforcement-learning-kr-v2's People

Contributors

hyeokreal avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

reinforcement-learning-kr-v2's Issues

Dense Layer with non floating point datatype

Hi there,
While executing the code "6-reinforce", i am getting this error "TypeError: Unable to build Dense layer with non-floating point dtype <dtype: 'int32'>" thrown by the line "policy = self.model(state)[0]". when i type casted the integer input "state" to float as "state.astype('float')" now it generate the error "len() of unsized object" at line "return np.random.choice(self.action_size, 1, p=policy)[0]" . how to tackle this?

다들 Atari 잘되시나요??

저만 이상한건지 모르겠는데
Atari가 제대로 안되는군요.
한군데가 아니고 여러군데, 윈8.1 윈10 등에서 다 그러는데...

딱히 질문은 아니고 제가 해결한 방법을 올립니다.
아마 vs 2015 이상 깔린데는 괜찮으리라 보긴 합니다만,
안깔린 곳에서 돌리실 분들 참고바랍니다.

  1. 사용한 베이스 환경 :
    Anaconda3-2019.10-Windows-x86_64.exe (그냥 쓰던거라 계속 씀)
    tf 1.15.0 + keras 2.2.4 (1판 내용 돌릴때 씀)
    tf 2.3.0 (2판 내용 돌릴때 씀)
    위 둘은 각각의 가상환경으로 돌림.

  2. 필요한 패키지
    pip install scikit-image
    pip install gym
    pip install gym[atari]
    (당연한거지만 다 설치한 다음, 다음 내역 진행해야함. 아니면 폴더도 없으니까요...)

    아래는 설치된 gym atari 버전입니다.
    gym 0.18.0
    atari-py 0.2.6

  3. 지금 설명할 부분은 tf 1.x 에서는 이상없는 부분인데,
    이상하게 tf 2.x에서는 안됨.
    FileNotFoundError: Could not find module 'C:\ProgramData\Anaconda3\envs\tensorflow2\lib\site-packages\atari_py\ale_interface\ale_c.dll' (or one of its dependencies). Try using the full path with constructor syntax.
    위와 같은 에러가 뜸.
    https://stackoverflow.com/questions/63080326/could-not-find-module-atari-py-ale-interface-ale-c-dll-or-one-of-its-dependenc
    위 링크를 참고하여 ale_c.dll 을 다운받거나, 혹은 1.15 환경에서 설치한 후 ale_c.dll 파일을 꺼내와서
    C:\ProgramData\Anaconda3\envs\ <가상환경이름> \Lib\site-packages\atari_py\ale_interface
    이 경로에 복사해 넣으세요.
    (물론 있으면 안넣어도 되지만 아마 없을겁니다.)
    (참고로 저기서 다운 받으나 1.15에서 정상적으로 설치된 것을 꺼내오나
    2020-12-30 기준 ale_c.dll 파일의 해시는 동일합니다)

  4. 이게 또 고약한 부분인데
    일단 vs2015 이상 깔렸다면 괜찮을 가능성이 있는데 vs깔린곳에서 안해봐서 확실히는 모르겠음.
    msvcp140d.dll 가 문제가 있다고 에러가 뜨는데, 이건 vs 같은게 깔려야만 생기는 파일입니다.
    (재배포패키지 vs2015-2019 등의 설치로는 해결 안될수 있음.)
    (~~d.dll은 대개 디버그용 dll이라 vs 안깔면 대개 안깔림)

    https://zweistar2.tistory.com/253
    위 링크에서 32bit-dll 을 받은후
    C:\Windows\System32
    에 풀어넣으면 됩니다.

    32bit-dll 파일 내용이 C:\Windows\System32 에 똑같이 있는지 확인후
    System32에 동일 파일이 있다면 원본은 백업하고 복사해 넣으시기 바랍니다.
    무조건 덮어씌웠다가는 다른 64비트 응용프로그램이 실행 안될 수 있습니다.
    왜냐하면 아타리를 위해서라면 덮어씌우면 되긴 되는데,
    아타리 하나 돌리려고 다른거 실행 못하는 대참사가 벌어질 수 있습니다.
    반드시 원본 백업 하세요. 자신없으면 가상머신에 테스트로 해보시거나요.

    여기까지만 보면 왜 고약한 문제인지 이해가 안갈수 있는데요,

    C:\Windows\System32 <- 64비트 dll 자리
    C:\Windows\SysWOW64 <- 32비트 dll 자리
    (오타 아닙니다. 이름만 봤을때는 정반대 같지만, 실제로 저게 본래 각 비트에 따른 dll 자리입니다.)

    즉, 64비트 dll 장소에 32비트 dll을 넣어야하기 때문에 문제가 될 수 있습니다.
    (처음에 실험한다고 여기저기 막 넣어보다 발견)
    위에 말했듯, 기존파일이 있을경우 덮어씌우다가 다른게 망가지는 참사가 발생할 수 있으니,
    32bit-dll 파일 내용이 C:\Windows\System32 에 똑같이 있는지 확인후
    System32에 동일 파일이 있다면 원본은 백업하고 복사해 넣으시기 바랍니다.

가상머신 등 여러군데서 신규설치하며 확인해본 결과
여기까지 하면 breakout_a3c 등 Atari 돌리는건 할 수 있습니다.
만약 위 사항을 따르지 않고도 그냥 잘되거든 위에 내용은 무시하시면 됩니다. 괜히 손댔다 더 꼬일 수 있음.

model summary 는 어떻게 봐야하나요?

2-breakout-a3c 에서 train.py 를 해보는 중인데,

self.global_model.summary()
해봤더니 모델 요약 조금 나오다
ValueError: You tried to call count_params on conv2d_2, but the layer isn't built. You can build it manually via: conv2d_2.build(batch_input_shape).

self.local_model.summary()
해봤더니
ValueError: This model has not yet been built. Build the model first by calling build() or calling fit() with some data, or specify an input_shape argument in the first layer(s) for automatic build.

이런 에러가 나오면서 모델 요약을 안보여주는데
어느 부분에서 봐야하나요?

실행오류

계속 실행할때 마다 다음과 같은 error가 발생하는데 어떻게 해결하나요?
image

ask the env.

개정판 2.0으로 설치를 하였는데, 설치환경을 Vs로 Run 할경우, 그리드월드는 돌아가는데, cart-pole이나, 아트리 브레이크 env는 돌아가지 않습니다. 왜그런는지요...

텐서플로 2.x 속도 이슈는 없나요?

1판의 내용을
텐서플로 2.0 나오고 텐서플로.org 사이트의 가이드에 따라
억지로 고쳐서 했었는데
속도가 너무 느려서 포기했더랬습니다.

그런데 이곳의 2판 샘플은 제가 고친내용이랑 꽤나 다르군요.

그래서 저렇게 쓰면 뭔가 좀 개선이 있나 싶어
직접 비교하려고 보니 모델을 고친 부분도 있고 여러가지 고친 사항이 많더군요.
완전히 똑같이 맞춰서 고치려다 보니 tf.train의 Rmsprop에는 rho도 없고 똑같이하는게 어렵더군요.
또 괜히 시간만 잡아먹는거 아닌가 싶어서
저자님의 의견을 듣고 싶습니다.

TF 2.x의 속도 문제는 제대로 개선된건가요?

코드 실행 오류

image
"1-grid-world/5-deep-sarsa/" 에 있는 스크립트가 실행하면 위와 같은 오류가 나옵니다.

몇가지 문의^^

안녕하세요, 처음 글 올려 인사부터 드립니다^^

이해하기 쉬운 설명과 시각적인 예제로 기초공부에 많은 도움되었습니다!!

2가지 궁금한 것이 있는데요, 이미 검토된 이슈면 이해 부탁드립니다^^

  1. 아래와 같은 v2 버전 딥살사 예제에서 학습 모델을 저장할 때 매 100번마다 저장을 하는데,
    그러면 e 가 0~999 이므로 마지막 학습을 저장하기 위해서는 (e+1) % 100 으로 해야 하지 않나요?

    (그리드월드 딥살사 train.py 중 에서)

    100 에피소드마다 모델 저장

     if e % 100 == 0:
         agent.model.save_weights('save_model/model', save_format='tf')
    
  2. 그리고 위 예제에서 accuracy가 기준값보다 작을 때 학습을 중지하려면, 코드 어느 부분을 고치면 되는지요?

감사합니다!

개정판전에는 잘 실행되었는데요, 개정판을 사서 텐서2.0으로 하려면 환경을 어떻게 업그레이드해야할까요?

wiki에 있는데로 따라하기 전에 그냥 텐서만 2.0으로 하면되는 줄 알고 했다가 온갖 에러가 나와서요~ 환경을 아얘다시 셋팅해야할 것 같아서요~ 개정판 전에 2017년인가 2018년에 산 파이썬과 케라스로 배우는 강화학습은 실행전에 환경 셋팅을 잘 따라해서 모든 코드가 실행되었었습니다.

설치 마지막 과정인 breakout_dqn.py 실행오류 질문

실행오류
다음과 같이 모듈을 인식 못하는 것 같은데 어디서 문제인건지 모르겠습니다. 이전 과정에서 오류없이 모두 설치 완료했었습니다 ㅠ

그리고 환경 변수 설정 단계에서 PYTHONPATH 변수 값에 atari-py 폴더 경로를 넣는거 맞나요? atari.py라고 표기가 되어있는 사진이 있어서 혼동이 있습니다.

gym[atari] 설치 질문

안녕하세요?
딥러닝 초보자 입니다 ㅠㅠ

window에서 코드를 열심히 하고 있습니다.
그런데 atari부터는 설치가 잘 안되네요

일단 제가 한 것은
pip install gym
을 하고,
pip install gym[atari]
를 실행한 거였읍니다

혹시 저와 같은 어려움을 해결한 분 있으면 공유해 주실수 있나요?

[실행오류] 2-cartpole/3-continuous-actor-critic

tensorflow_probability 라는 패키지를 사용합니다만,
requirements.txt 에는 해당 패키지가 없습니다.

tensorflow==2.1.0 버전을 사용하시니 이와 맞는 tensorflow_probability 를 설치해야합니다.

https://github.com/tensorflow/probability/releases/tag/v0.9.0
를 보았을 때, tensorflow-probability==0.9.0tensorflow==2.1.0과 호환합니다.

버전 명시 없이 최신 tensorflow-probability의 경우엔 tensorflow==2.3.0과 호환합니다.

code를 따라할 경우 vscode 환경은 어떻게 구성해야 하나요?

download한 예제파일, vscode에서 잘 돌리고 있습니다.그런데 예제파일 처럼 똑같이 vscode에서 따라하고 싶은데 어떻게 해야 하나요?
즉 new vscode 환경을 어떻게 만들어야 하나요?
예제처럼 따라할 경우 새로운 vscode 환경은 어떻게 구성하라는 언급은 없네요.
저는 완전 초보자구요.약 일주일 정도? 삽질하다가 용기내서 질문합니다.

DQN atari error 질문드려요

안녕하세요 코랩 환경에서 코드를 실행해보고있는데 다음과 같은 오류가 발생하는데, 어떻게 수정하는게 좋을까요?
구글링하다가 막혀서 질문남깁니다.

메인함수의 다음부분에서
image

TypeError: 'bool' object is not subscriptable 이런 오류가 발생합니다

책 오타

친절한 설명으로 정말 즐겁게 공부하고 있습니다!.

  1. p.105
    차원의 저주 영어 단어에 오타를 발견했습니다.
    Curse of Dimentionality -> Curse of Dimensionality

  2. p.178
    모델 호출 코드
    model = CNN() -> model=Model()

수고하세요!

/3-atari/1-breakout-dqn/train.py 에서 질문 있습니다!

203번라인

next_history = np.append(next_state, history[:, :, :, :3], axis=3)

에서, history 의 뒤에 next_state 를 append 하지 않고

next_state 의 뒤에 history 를 append 하는 이유를 알 수 있을까요?

next_state 가 최신 상태인데, 그 뒤에 과거의 state 들을 붙여도 학습이 잘 되나요?

history 안의 각각의 state 들의 정렬된 순서는 학습과는 무관하나요?

자세하게 예를들면, 일련의 상태를 0, 1, 2, 3 이라고 번호를 붙인다면

최초의 history 에는 0, 0, 0, 0 이고,
최초의 next_history 는 203번 라인 식을 따르면 1, 0, 0, 0 이고,

두번째의 history 는 1, 0, 0, 0
두번째의 next_history 는 203번 라인 식을 따르면 2, 1, 0, 0

이런식으로 화면의 순서가 역순으로 쌓이게 되는데 학습에는 상관이 없나요? 아니면 제가 오해하고 있는걸까요?

[수정문의] 1-grid-world/4-q-learning Agent의 Epsilon 값

안녕하세요.
예제를 실행하던 중, Q-table 에서는 장애물로 가는 액션들이 -50 까지도 가는 상황이고
max(Q(s', a')) 를 할텐데도 에이전트가 자꾸 장애물로 가서 보았더니
E-greedy parameter가 0.9로 설정되어 대부분 랜덤액션을 하는 것으로 추정했습니다.

서적 상에는 0.1 로 표기가 되어있고 SARSA에서도 0.1로 설정되어있는데
epsilon 파라미터의 오류가 아닐까 하여 이슈제기 드립니다.

3-continuous-actor-critic에서 cartpolecontinuous 가 등록되지 않습니다.

Error Traceback (most recent call last)
in
96 entry_point='env:ContinuousCartPoleEnv',
97 max_episode_steps=500,
---> 98 reward_threshold=475.0)
99
100 env = gym.make('CartPoleContinuous-v0')

c:\users\ .\gym\gym\envs\registration.py in register(id, **kwargs)
140
141 def register(id, **kwargs):
--> 142 return registry.register(id, **kwargs)
143
144 def make(id, **kwargs):

c:\users\ .\gym\gym\envs\registration.py in register(self, id, **kwargs)
133 def register(self, id, **kwargs):
134 if id in self.env_specs:
--> 135 raise error.Error('Cannot re-register id: {}'.format(id))
136 self.env_specs[id] = EnvSpec(id, **kwargs)
137

Error: Cannot re-register id: CartPoleContinuous-v0

어떤 문제일까요..?

예제파일 따라할 경우 vscode 환경은 어떻게 구성?

download한 예제파일, vscode에서 잘 돌리고 있습니다.그런데 예제파일 처럼 똑같이 vscode에서 따라하고 싶은데 어떻게 해야 하나요?
즉 new vscode 환경을 어떻게 만들어야 하나요?
예제처럼 따라할 경우 새로운 vscode 환경은 어떻게 구성하라는 언급은 없네요.
저는 완전 초보자구요.약 일주일 정도? 삽질하다가 용기내서 질문합니다.

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.