Code Monkey home page Code Monkey logo

reinforcement-learning-kr's Introduction


RLCode팀이 직접 만든 강화학습 예제들을 모아놓은 Repo 입니다. 영문 (English)

Maintainers - 이웅원, 이영무, 양혁렬, 이의령, 김건우

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

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

  1. Python 3.5
  2. Tensorflow 1.0.0
  3. Keras
  4. numpy
  5. pandas
  6. pillow
  7. matplot
  8. Skimage
  9. h5py

설치 방법 (Install Requirements)

pip install -r requirements.txt

목차 (Table of Contents)

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

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

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

reinforcement-learning-kr's People

Contributors

dnddnjs avatar greentec avatar hyeokreal avatar hyunsooda avatar jsrimr avatar keon avatar koorukuroo avatar wooridle avatar zzing0907 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

reinforcement-learning-kr's Issues

mc_agent.py 오류 수정 요청

3-monte-carlo/mc_gant.py 에서
31 번째 줄 G_t = self.discount_factor * (reward[1] + G_t) 가
G_t = reward[1] + self.discount_factor *G_t 로 바꾸어야 될거 같습니다.

NSException in DeepSARSA example

안녕하세요.
DeepSARSA 예제를 실행할때 NSException이 발생하는데요, 왜 그런지 알 수 있을까요..?
MacOS를 사용하고 있습니다.
에러코드도 가져와봤습니다!

감사합니다.

Using TensorFlow backend. 2017-09-13 12:24:36.081 Python[41112:3824657] -[NSApplication _setup:]: unrecognized selector sent to instance 0x103955ce0 2017-09-13 12:24:36.085 Python[41112:3824657] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSApplication _setup:]: unrecognized selector sent to instance 0x103955ce0' *** First throw call stack: ( 0 CoreFoundation 0x00007fff7d8d62cb __exceptionPreprocess + 171 1 libobjc.A.dylib 0x00007fff926e148d objc_exception_throw + 48 2 CoreFoundation 0x00007fff7d957f04 -[NSObject(NSObject) doesNotRecognizeSelector:] + 132 3 CoreFoundation 0x00007fff7d848755 ___forwarding___ + 1061 4 CoreFoundation 0x00007fff7d8482a8 _CF_forwarding_prep_0 + 120 5 Tk 0x0000000107b00c02 TkpInit + 471 6 Tk 0x0000000107a7c2a9 Tk_Init + 1794 7 _tkinter.cpython-35m-darwin.so 0x0000000104befdcd Tcl_AppInit + 77 8 _tkinter.cpython-35m-darwin.so 0x0000000104bed7d9 _tkinter_create + 889 9 Python 0x0000000100065479 PyCFunction_Call + 233 10 Python 0x00000001000f1631 PyEval_EvalFrameEx + 36305 11 Python 0x00000001000f2510 _PyEval_EvalCodeWithName + 2368 12 Python 0x00000001000f038b PyEval_EvalFrameEx + 31531 13 Python 0x00000001000f2510 _PyEval_EvalCodeWithName + 2368 14 Python 0x00000001000f2617 PyEval_EvalCodeEx + 71 15 Python 0x000000010004031a function_call + 186 16 Python 0x000000010000d713 PyObject_Call + 99 17 Python 0x00000001000286fc method_call + 140 18 Python 0x000000010000d713 PyObject_Call + 99 19 Python 0x0000000100082a01 slot_tp_init + 81 20 Python 0x0000000100079624 type_call + 212 21 Python 0x000000010000d713 PyObject_Call + 99 22 Python 0x00000001000ec852 PyEval_EvalFrameEx + 16370 23 Python 0x00000001000f2510 _PyEval_EvalCodeWithName + 2368 24 Python 0x00000001000f2671 PyEval_EvalCode + 81 25 Python 0x000000010012083e PyRun_FileExFlags + 206 26 Python 0x0000000100120adf PyRun_SimpleFileExFlags + 447 27 Python 0x0000000100139858 Py_Main + 3512 28 Python 0x0000000100000e32 Python + 3634 29 Python 0x0000000100000c84 Python + 3204 30 ??? 0x0000000000000002 0x0 + 2 ) libc++abi.dylib: terminating with uncaught exception of type NSException

SARSA 코드 관련 질문 있습니다.

SARSA 코드를 아나콘다에 있는 주피터로 실행시킬려고 하는데요.

evrironment.py 부분을 먼저 실행시켰고 잘 작동됐습니다.

그런데 sarsa_agent.py 부분을 실행시킬려고 하는데 계속 "from environment" 부분이 잘못된 모듈이라고 나오네요. 이럴 때 어떻게 해야 하나요?

Definition of entropy in A3C code

A3C코드에 보면, entropy 는 다음과 같이 정의되어 있습니다.

entropy = K.sum(policy * K.log(policy + 1e-10), axis=1)
entropy = K.sum(entropy)

근데, 이 entropy에 -1을 곱하지 않는 이유가 궁금합니다. 지금 네트워크에서 이 entropy를 minimize를 하려는 것이 목표라면, -1을 붙여줘야 GradientDecent를 통해서 minimum 값으로 줄여갈 수 있지 않나요?
(entropy의 정의는 -p * logp이고, 이 자체의 의미가 "정보를 최적으로 담을 수 있는 bit수" 이기 때문에, 이를 minimize하는 것이 목표가 되고, 이를 위해서는 위의 코드에 -1를 붙여줘야 된다고 생각합니다)

제 생각이 틀리다면, 지적 부탁드립니다

감사합니다

p. 108 벨만 기대 방정식과 벨만 최적 방정식

정리 > 다이내믹 프로그래밍과 그리드월드

단락에서
'벨만 기대 방정식을 이용한 것은 정책 이터레이션이며, 벨만 최적 방정식을 이용한 것이 정책 이터레이션입니다.'
-->
'벨만 기대 방정식을 이용한 것은 정책 이터레이션이며, 벨만 최적 방정식을 이용한 것이 가치 이터레이션입니다.

으로 바뀌어야 할 것 같습니다만 맞나요?

#17 와 마찬가지로 일단은 오탈자로 등록 해보겠습니다.

감사합니다.

주석이 잘못된거 같아서 알려드립니다..

소스 : reinforcement-learning-kr/1-grid-world/1-policy-iteration/environment.py

12:POSSIBLE_ACTIONS = [0, 1, 2, 3] # 상, 하, 좌, 우

위 주석에서 [상,하,좌,우] -> [좌,우,상,하] 로 되어야 할듯 합니다~

멀티쓰레드 학습에 관련해서 질문이 있습니다.

안녕하세요. 책을 보고 많은 도움을 받고 있습니다. 추가적으로 코드를 보며 궁금증이 생겨 이렇게 글을 남깁니다.

  1. Keras로 생성한 모델이 thread safe 한가?
  2. 만약 그렇다면 굳이 central agent의 파라미터와 worker agent의 파라미터를 왜 따로 두는 것인가?

질문은 크게 두 가지입니다. 코드를 보면 각 worker agent들이 global network의 파라미터를 직접 학습하고 주기적으로 global network의 파라미터들을 worker agent로 셋팅하는 것으로 구현되어 있습니다. 첫 번째 질문은 이렇게 글로벌 네트워크에 동시다발 적으로 접근하여 파라미터를 변경해도 상관없는지와 만약 상관이 없다면 굳이 worker agent에도 모델을 두는 이유가 궁금합니다. 그냥 여러 agent가 global network의 파라미터만 변경 시켜도 상관없는 것이 아닌가요?

deep sarsa 실행시 tkinter 오류

안녕하세요
책을 읽으며 실습을 진행하는 중에 제공해주신 코드실행시 오류가 발생하여 문의 드립니다.
OS Mac 10.12.6
실행 : python3 deep_sarsa_agent.py
python 버전 : Python 3.5.4
오류 내용은 아래와 같습니다.

Using TensorFlow backend.
2017-10-22 23:50:08.979 Python[1081:14831] -[NSApplication _setup:]: unrecognized selector sent to instance 0x103be1c80
2017-10-22 23:50:08.980 Python[1081:14831] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSApplication _setup:]: unrecognized selector sent to instance 0x103be1c80'
*** First throw call stack:
(
0 CoreFoundation 0x00007fffa4c7d2cb __exceptionPreprocess + 171
1 libobjc.A.dylib 0x00007fffb9a9548d objc_exception_throw + 48
2 CoreFoundation 0x00007fffa4cfef04 -[NSObject(NSObject) doesNotRecognizeSelector:] + 132
3 CoreFoundation 0x00007fffa4bef755 forwarding + 1061
4 CoreFoundation 0x00007fffa4bef2a8 _CF_forwarding_prep_0 + 120
5 Tk 0x0000000106f76c02 TkpInit + 471
6 Tk 0x0000000106ef22a9 Tk_Init + 1794
7 _tkinter.cpython-35m-darwin.so 0x0000000106dcadcd Tcl_AppInit + 77
8 _tkinter.cpython-35m-darwin.so 0x0000000106dc87d9 _tkinter_create + 889
9 Python 0x0000000100065cd9 PyCFunction_Call + 233
10 Python 0x00000001000f3e34 PyEval_EvalFrameEx + 38500
11 Python 0x00000001000f48a0 _PyEval_EvalCodeWithName + 2400
12 Python 0x00000001000f228a PyEval_EvalFrameEx + 31418
13 Python 0x00000001000f48a0 _PyEval_EvalCodeWithName + 2400
14 Python 0x00000001000f49a7 PyEval_EvalCodeEx + 71
15 Python 0x000000010004084a function_call + 186
16 Python 0x000000010000d783 PyObject_Call + 99
17 Python 0x000000010002886c method_call + 140
18 Python 0x000000010000d783 PyObject_Call + 99
19 Python 0x0000000100083a81 slot_tp_init + 81
20 Python 0x000000010007a3c4 type_call + 212
21 Python 0x000000010000d783 PyObject_Call + 99
22 Python 0x00000001000effb4 PyEval_EvalFrameEx + 22500
23 Python 0x00000001000f48a0 _PyEval_EvalCodeWithName + 2400
24 Python 0x00000001000f4a01 PyEval_EvalCode + 81
25 Python 0x0000000100122b7e PyRun_FileExFlags + 206
26 Python 0x0000000100122e2f PyRun_SimpleFileExFlags + 463
27 Python 0x000000010013bd12 Py_Main + 3554
28 Python 0x0000000100000e32 Python + 3634
29 Python 0x0000000100000c84 Python + 3204
)
libc++abi.dylib: terminating with uncaught exception of type NSException
Abort trap: 6

pip3 list
bleach (1.5.0)
certifi (2017.7.27.1)
chardet (3.0.4)
cycler (0.10.0)
decorator (4.1.2)
gym (0.9.4)
h5py (2.7.1)
html5lib (0.9999999)
idna (2.6)
Keras (2.0.8)
Markdown (2.6.9)
matplotlib (2.1.0)
networkx (2.0)
numpy (1.13.3)
olefile (0.44)
pandas (0.20.3)
Pillow (4.3.0)
pip (9.0.1)
protobuf (3.4.0)
pyglet (1.2.4)
pyparsing (2.2.0)
python-dateutil (2.6.1)
pytz (2017.2)
PyWavelets (0.5.2)
PyYAML (3.12)
requests (2.18.4)
scikit-image (0.13.1)
scipy (0.19.1)
setuptools (36.6.0)
six (1.11.0)
tensorflow (1.3.0)
tensorflow-tensorboard (0.1.8)
urllib3 (1.22)
Werkzeug (0.12.2)
wheel (0.30.0)

감사합니다.

코드 실해 해봤는데 # 정책신경망을 업데이트하는 훈련함수 생성 부분에서 에러가 나요

에러 내용 : 예외가 발생했습니다. TypeError
get_updates() takes 3 positional arguments but 4 were given
File "D:\seungwan\Desktop\AI_Study\AI_Reference\reinforcement-learning-kr-master\1-grid-world\7-reinforce\reinforce_agent.py", line 52, in optimizer
updates = optimizer.get_updates(self.model.trainable_weights, [], loss)
File "D:\seungwan\Desktop\AI_Study\AI_Reference\reinforcement-learning-kr-master\1-grid-world\7-reinforce\reinforce_agent.py", line 25, in init
self.optimizer = self.optimizer()
File "D:\seungwan\Desktop\AI_Study\AI_Reference\reinforcement-learning-kr-master\1-grid-world\7-reinforce\reinforce_agent.py", line 92, in
agent = ReinforceAgent()

강화학습 실행 문제 그리드월드 reinforce_agent.py 실행시

안녕하세요.

책에 있는 예제를 돌려보는데, 돌리면 초기 선언 함수에서 아래와 같은 에러가 발생하는데요. 왜 그런건가요?

File "venv/reinforce_agent.py", line 97, in
agent = ReinforceAgent()
File "venv/reinforce_agent.py", line 28, in init
self.optimizer = self.optimizer()
File "venv/reinforce_agent.py", line 58, in optimizer
updates=updates)
File "venv/lib/python3.7/site-packages/keras/backend/tensorflow_backend.py", line 3009, in function
**kwargs)
File "venv/lib/python3.7/site-packages/tensorflow_core/python/keras/backend.py", line 3773, in function
return EagerExecutionFunction(inputs, outputs, updates=updates, name=name)
File "venv/lib/python3.7/site-packages/tensorflow_core/python/keras/backend.py", line 3620, in init
raise ValueError('Cannot create a Keras backend function with updates'
ValueError: Cannot create a Keras backend function with updates but no outputs during eager execution.

제 3장 코드에서 width,height 혼동 문제.

1-grid-word ---> 1-policy-iteration 에서

코드 전제적으로 width, height 순서가 맞지 않습니다.
코드에서는 widht=5, height=5로 되어 있어, 작동하지만,
width=5, height=6이면, 작동하지 않습니다.

예들 들어,

self.value_table = [[0.0] * env.width for _ in range(env.height)]  # height x width

--->

self.value_table = [[0.0] * env.height for _ in range(env.width)]  # width x height

코드 전체를 좀 손봐야 할 것 같습니다.

graphic상 에서는 height, width 순으로 되어 있는 것과 반대로, value, reward를 width, height순으로 되어 있는데. 이때문에 혼동이 일어난 것 같습니다.

그리고,

POSSIBLE_ACTIONS = [0, 1, 2, 3]  # 좌, 우, 상, 하

def draw_one_arrow(self, col, row, policy):
    if col == 2 and row == 2:
        return

    if policy[0] > 0:  # up
        origin_x, origin_y = 50 + (UNIT * row), 10 + (UNIT * col)
        self.arrows.append(self.canvas.create_image(origin_x, origin_y,image=self.up))
    if policy[1] > 0:  # down
        origin_x, origin_y = 50 + (UNIT * row), 90 + (UNIT * col)
        self.arrows.append(self.canvas.create_image(origin_x, origin_y,image=self.down))
    if policy[2] > 0:  # left
        origin_x, origin_y = 10 + (UNIT * row), 50 + (UNIT * col)
        self.arrows.append(self.canvas.create_image(origin_x, origin_y,image=self.left))
    if policy[3] > 0:  # right
        origin_x, origin_y = 90 + (UNIT * row), 50 + (UNIT * col)
        self.arrows.append(self.canvas.create_image(origin_x, origin_y,image=self.right))

policy에서의 방향과 draw_one_arrow()에서의 sync가 맞지 않습니다.

3-atari에서 breakout_a3c.py 실행에 관한 문제

PC1
cpu: intel i-5
no graphic card
python 3.5
tensorflow 1.14
keras 2.3.0

PC2
cpu: inter i-7
rtx-2070
python 3.5
tensorflow 1.14
keras 2.3.0

breakout_a3c.py 실행 시
두 컴퓨터 모두 아래와 같은 에러가 발생합니다.
threading library관련 문제 같은데..

Model: "model_18"


Layer (type) Output Shape Param #

input_9 (InputLayer) (None, 84, 84, 4) 0


conv2d_17 (Conv2D) (None, 20, 20, 16) 4112


conv2d_18 (Conv2D) (None, 9, 9, 32) 8224


flatten_9 (Flatten) (None, 2592) 0


dense_25 (Dense) (None, 256) 663808


dense_27 (Dense) (None, 1) 257

Total params: 676,401
Trainable params: 676,401
Non-trainable params: 0


Exception in thread Thread-2:
Traceback (most recent call last):
File "/usr/lib/python3.5/threading.py", line 914, in _bootstrap_inner
self.run()
File "/home/name/AdvRL/reinforcement-learning/3-atari/1-breakout/breakout_a3c.py", line 207, in run
action, policy = self.get_action(history)
File "/home/name/AdvRL/reinforcement-learning/3-atari/1-breakout/breakout_a3c.py", line 327, in get_action
policy = self.local_actor.predict(history)[0]
File "/home/name/.local/lib/python3.5/site-packages/keras/engine/training.py", line 1462, in predict
callbacks=callbacks)
File "/home/name/.local/lib/python3.5/site-packages/keras/engine/training_arrays.py", line 276, in predict_loop
callbacks.model.stop_training = False
File "/home/name/.local/lib/python3.5/site-packages/keras/engine/network.py", line 323, in setattr
super(Network, self).setattr(name, value)
File "/home/name/.local/lib/python3.5/site-packages/keras/engine/base_layer.py", line 1215, in setattr
if not _DISABLE_TRACKING.value:
AttributeError: '_thread._local' object has no attribute 'value'

Exception in thread Thread-3:
Traceback (most recent call last):
File "/usr/lib/python3.5/threading.py", line 914, in _bootstrap_inner
self.run()
File "/home/name/AdvRL/reinforcement-learning/3-atari/1-breakout/breakout_a3c.py", line 207, in run
action, policy = self.get_action(history)
File "/home/name/AdvRL/reinforcement-learning/3-atari/1-breakout/breakout_a3c.py", line 327, in get_action
policy = self.local_actor.predict(history)[0]
File "/home/name/.local/lib/python3.5/site-packages/keras/engine/training.py", line 1462, in predict
callbacks=callbacks)
File "/home/name/.local/lib/python3.5/site-packages/keras/engine/training_arrays.py", line 276, in predict_loop
callbacks.model.stop_training = False
File "/home/name/.local/lib/python3.5/site-packages/keras/engine/network.py", line 323, in setattr
super(Network, self).setattr(name, value)
File "/home/name/.local/lib/python3.5/site-packages/keras/engine/base_layer.py", line 1215, in setattr
if not _DISABLE_TRACKING.value:
AttributeError: '_thread._local' object has no attribute 'value'

Exception in thread Thread-4:
Traceback (most recent call last):
File "/usr/lib/python3.5/threading.py", line 914, in _bootstrap_inner
self.run()
File "/home/name/AdvRL/reinforcement-learning/3-atari/1-breakout/breakout_a3c.py", line 207, in run
action, policy = self.get_action(history)
File "/home/name/AdvRL/reinforcement-learning/3-atari/1-breakout/breakout_a3c.py", line 327, in get_action
policy = self.local_actor.predict(history)[0]
File "/home/name/.local/lib/python3.5/site-packages/keras/engine/training.py", line 1462, in predict
callbacks=callbacks)
File "/home/name/.local/lib/python3.5/site-packages/keras/engine/training_arrays.py", line 276, in predict_loop
callbacks.model.stop_training = False
File "/home/name/.local/lib/python3.5/site-packages/keras/engine/network.py", line 323, in setattr
super(Network, self).setattr(name, value)
File "/home/name/.local/lib/python3.5/site-packages/keras/engine/base_layer.py", line 1215, in setattr
if not _DISABLE_TRACKING.value:
AttributeError: '_thread._local' object has no attribute 'value'

Exception in thread Thread-5:
Traceback (most recent call last):
File "/usr/lib/python3.5/threading.py", line 914, in _bootstrap_inner
self.run()
File "/home/name/AdvRL/reinforcement-learning/3-atari/1-breakout/breakout_a3c.py", line 207, in run
action, policy = self.get_action(history)
File "/home/name/AdvRL/reinforcement-learning/3-atari/1-breakout/breakout_a3c.py", line 327, in get_action
policy = self.local_actor.predict(history)[0]
File "/home/name/.local/lib/python3.5/site-packages/keras/engine/training.py", line 1462, in predict
callbacks=callbacks)
File "/home/name/.local/lib/python3.5/site-packages/keras/engine/training_arrays.py", line 276, in predict_loop
callbacks.model.stop_training = False
File "/home/name/.local/lib/python3.5/site-packages/keras/engine/network.py", line 323, in setattr
super(Network, self).setattr(name, value)
File "/home/name/.local/lib/python3.5/site-packages/keras/engine/base_layer.py", line 1215, in setattr
if not _DISABLE_TRACKING.value:
AttributeError: '_thread._local' object has no attribute 'value'

Exception in thread Thread-6:
Traceback (most recent call last):
File "/usr/lib/python3.5/threading.py", line 914, in _bootstrap_inner
self.run()
File "/home/name/AdvRL/reinforcement-learning/3-atari/1-breakout/breakout_a3c.py", line 207, in run
action, policy = self.get_action(history)
File "/home/name/AdvRL/reinforcement-learning/3-atari/1-breakout/breakout_a3c.py", line 327, in get_action
policy = self.local_actor.predict(history)[0]
File "/home/name/.local/lib/python3.5/site-packages/keras/engine/training.py", line 1462, in predict
callbacks=callbacks)
File "/home/name/.local/lib/python3.5/site-packages/keras/engine/training_arrays.py", line 276, in predict_loop
callbacks.model.stop_training = False
File "/home/name/.local/lib/python3.5/site-packages/keras/engine/network.py", line 323, in setattr
super(Network, self).setattr(name, value)
File "/home/name/.local/lib/python3.5/site-packages/keras/engine/base_layer.py", line 1215, in setattr
if not _DISABLE_TRACKING.value:
AttributeError: '_thread._local' object has no attribute 'value'

Exception in thread Thread-7:
Traceback (most recent call last):
File "/usr/lib/python3.5/threading.py", line 914, in _bootstrap_inner
self.run()
File "/home/name/AdvRL/reinforcement-learning/3-atari/1-breakout/breakout_a3c.py", line 207, in run
action, policy = self.get_action(history)
File "/home/name/AdvRL/reinforcement-learning/3-atari/1-breakout/breakout_a3c.py", line 327, in get_action
policy = self.local_actor.predict(history)[0]
File "/home/name/.local/lib/python3.5/site-packages/keras/engine/training.py", line 1462, in predict
callbacks=callbacks)
File "/home/name/.local/lib/python3.5/site-packages/keras/engine/training_arrays.py", line 276, in predict_loop
callbacks.model.stop_training = False
File "/home/name/.local/lib/python3.5/site-packages/keras/engine/network.py", line 323, in setattr
super(Network, self).setattr(name, value)
File "/home/name/.local/lib/python3.5/site-packages/keras/engine/base_layer.py", line 1215, in setattr
if not _DISABLE_TRACKING.value:
AttributeError: '_thread._local' object has no attribute 'value'

Exception in thread Thread-8:
Traceback (most recent call last):
File "/usr/lib/python3.5/threading.py", line 914, in _bootstrap_inner
self.run()
File "/home/name/AdvRL/reinforcement-learning/3-atari/1-breakout/breakout_a3c.py", line 207, in run
action, policy = self.get_action(history)
File "/home/name/AdvRL/reinforcement-learning/3-atari/1-breakout/breakout_a3c.py", line 327, in get_action
policy = self.local_actor.predict(history)[0]
File "/home/name/.local/lib/python3.5/site-packages/keras/engine/training.py", line 1462, in predict
callbacks=callbacks)
File "/home/name/.local/lib/python3.5/site-packages/keras/engine/training_arrays.py", line 276, in predict_loop
callbacks.model.stop_training = False
File "/home/name/.local/lib/python3.5/site-packages/keras/engine/network.py", line 323, in setattr
super(Network, self).setattr(name, value)
File "/home/name/.local/lib/python3.5/site-packages/keras/engine/base_layer.py", line 1215, in setattr
if not _DISABLE_TRACKING.value:
AttributeError: '_thread._local' object has no attribute 'value'

Exception in thread Thread-9:
Traceback (most recent call last):
File "/usr/lib/python3.5/threading.py", line 914, in _bootstrap_inner
self.run()
File "/home/name/AdvRL/reinforcement-learning/3-atari/1-breakout/breakout_a3c.py", line 207, in run
action, policy = self.get_action(history)
File "/home/name/AdvRL/reinforcement-learning/3-atari/1-breakout/breakout_a3c.py", line 327, in get_action
policy = self.local_actor.predict(history)[0]
File "/home/name/.local/lib/python3.5/site-packages/keras/engine/training.py", line 1462, in predict
callbacks=callbacks)
File "/home/name/.local/lib/python3.5/site-packages/keras/engine/training_arrays.py", line 276, in predict_loop
callbacks.model.stop_training = False
File "/home/name/.local/lib/python3.5/site-packages/keras/engine/network.py", line 323, in setattr
super(Network, self).setattr(name, value)
File "/home/name/.local/lib/python3.5/site-packages/keras/engine/base_layer.py", line 1215, in setattr
if not _DISABLE_TRACKING.value:
AttributeError: '_thread._local' object has no attribute 'value'

Page 53쪽 오른쪽으로 행동을 취할경우의 보상

page.53쪽에서

오른쪽으로 행동을 취할 경우 1의 보상을 받는다고 적혀있는데,

아래->오른쪽, 오른쪽->아래 의 행동을 취해야 1의 보상을 받는게 아닌지요.

잘이해가 가지 않아 질문드립니다.

그리고, 상,하,좌,우 에대한 가치함수는 임의로 정한 것이지요?

답변기다리겠습니다. 감사합니다.

p.198 수식 5.21 질문

안녕하세요. 좋은 책으로 즐겁게 공부하고 있습니다.
p.198에 수식 5.21에 보면 policy gradient theorem에 의해서 유도된 gradient J (theta)가 expectation의 형태로 나타나지는데,
이 부분에 대한 식이 잘 이해가 안되서 Sutton 교수님의 RL:an introduction 책을 살펴보니 이 책에는 Expectation 안에 Sigma가 있는데 (구체적으로 Sutton 교수님 책 p.326, equation 13.6입니다.) 혹시 오타인가요?

이는 p.198 중간 쯤에 sigma_s * d_pi(x) * sigma_a * pi(a | s)가 에이전트가 어떤 상태 s에서 행동 a를 선택할 확률이라는 부분에서 오류가 있는 것 같습니다.

혹시 제가 잘못 이해하고있다면, 보충 설명이나 자료 공유해주시면 감사하겠습니다.

breakout_a3c.py에서 업데이트 하는 모델 대상에 대한 문의

안녕하세요?

breakout_a3c.py 소스코드를 보다 좀 이상한 점이 있어서 문의드립니다.
A3C는 local model의 gradient를 training해서 global model로 weight를 복사해 주는 것인데요,
코드는 global model의 gradient를 training해서 local model로 복사해 주는 것으로 되어 있는 것 같습니다.

아래는 관련 코드입니다.
self.train_model(done)
self.update_local_model()

제가 잘못 이해하고 있는건지요??

MC_learning.py 관련 문의

안녕하세요 좋은 책으로 강화학습 잘 공부하고 있습니다.

mc_learning.py 을 보다가 좀 이해가 안되는 부분이 있어 글을 남깁니다.
코드에서 실제로 에피소드마다 update하는 것은 q함수가 아니라 상태함수인 것 같습니다.
그런데 코멘트에는 q함수를 업데이트 한다고 나와 있습니다.
각 상태 s에서 action a 를 고려하지 않고, 테이블 인자도 row, col두개뿐인 걸로 보아 q함수가 아닌 것 같습니다.

그리고 MDP를 몰라서 MC로 state함수를 근사한 것인데,
state value함수에서 policy를 도출해 agent가 움직입니다.
possible_state함수에서 전이가능한 모든 상태(상하좌우)의
state value 값으로 현 상태의 policy를 제공해 주는 방식입니다.

그런데, 전체 state에서 다음 possible_state를 추려 낼 수 있다는 것은
사전에 상태전이 확률을 알고 있다고 쳐야되는것 아닐까요?
그렇다면, MDP를 모른다는 전제에 위배되는 것이라고 생각합니다.

코드가 상태가치함수를 업데이트 한다고 코멘트에 반영되어야 할 것 같습니다.
또, MDP를 안다 치고 데모를 위해 미리 알고 있는 상태전이확률로
정책을 얻어내는 것이라면 추가로 코멘트가 있어야 할 것 같습니다.

강화학습을 공부할 책이 별로 없었는데 덕분에 잘 공부하고 있습니다.
감사합니다.

Breakout score가 의아한부분이나옵니다.

BreakoutDeterministic-v4 A3C코드를 그대로 실행시켜 보았는데요
GTX 1060ti 환경에서 약 6시간 정도 경과-episode는 7000만회에 근접중- score가 0값으로만 보여주고있습니다. 책에서는 26시간정도 학습시켜서 좋은결과가 나왔다고 하셔서 지금 기다려보고있긴한데, 아예 학습의 진전이 보이지 않아서 문제가 생긴거 아닌가하는 궁금증이 생깁니다.

1-grid-world/7-reinforce/reinforce_agent.py 오류

안녕하세요! 5장의 reinforce 알고리즘을 실습해보기 위해서 1-grid-world/7-reinforce/reinforce_agent.py를 실행시켰는데 다음과 같은 오류가 발생했습니다.

image

값을 4개 전달해야하는 것 같은데 누락된 값이 무엇인지 알 수 있을까요?

play_dqn_model.py 의 score 문제

좋은 책을 출판해 주신 것에 대해서 감사합니다.

play_dqn_model.py 를 이용해서 기존해 훈련하신 모델을
실행을 했는데 agent 가 계속 오른쪽에 붙어 있고
score 는 계속 0 입니다.

코드에 아래와 같이 되어 있습니다.

agent.load_model("./save_model/breakout_dqn_5.h5")

아마도 환경적인 문제인 것 같은데 해결책이 있으면
부탁을 드립니다.

p.85 self.get_policy(state, action)

p.85 쪽에 아래 식이 두 번이 나옵니다.
value += self.get_policy(state, action)
부분이 모두
value += self.get_policy(state)[action]
이걸로 바뀌어야 할 것 같습니다. 맞나요?

module 'tensorflow' has no attribute 'get_default_graph' 발생

7-reinforce에서 reinforce_agent.py를 실행하면
module 'tensorflow' has no attribute 'get_default_graph' 에러가 발생합니다.
특이 사항은 Tensorflow 2.0.0-aplha0'로 업그레이드 했습니다.
에러가 왜 나는지 답변 부탁드립니다.

load_weights - 모델의 predict()의 액션값이 항상 같음

안녕하세요.

'reinforcement-learning-kr/3-atari/1-breakout/breakout_a3c.py' 코드에서 매우 높은 학습 결과(성능)을 나타내는 모델의 weights 저장한 후 다시 불러와서 play할 때에, 마치 처음 학습하는 것과 같이 항상 같은 값(액션)을 계속 리턴합니다.

비슷한 문제가 다루어 지는지 몇몇 이슈를 확인해 보았었는데, optimizer와 loss를 모델의 weights과 serializing 해야 한다는 내용들도 있고... 어떤 문제가 있는지 감이 잡히지 않습니다. 시원한 답변 부탁드립니다.

감사합니다.

cartpole-dqn에서 load_model=True시 에러입니다.

안녕하세요.
cartpole 예제를 DQN과 A2C로 실행을 하던 중에 error 메세지가 있어서 질문드립니다.

먼저 A2C에서
-카트폴 예제에서의 액터-크리틱(A2C) 에이전트
class A2CAgent:
def init(self, state_size, action_size):
self.render = True
self.load_model = True
False들을 True로 수정하여 실행할 경우 학습된 모델을 load해서 실행이 잘되는데요,

DQN에서 경우
-카트폴 예제에서의 DQN 에이전트
class DQNAgent:
def init(self, state_size, action_size):
self.render = True
self.load_model = True
다음과 같이 설정하고 실행할 경우,
ValueError: Dimension 1 in both shapes must be equal, but are 24 and 32 for 'Assign_6' (op: 'Assign') with input shapes: [4,24], [4,32].
와 같은 error창이 생깁니다.

파일들을 새로 받아서 실행해도 똑같은 error가 생겨서요.
error가 궁금합니다~!

windows 7에서 실습환경을 구축할려고 하는데 잘 안되네요

얼마전부터 책을 사서 따라해보고 있는데..
첫번째 환경설정하는 것부터가 제대로 되지 않네요.
책에도 환경설정하는 것에 대해서는 자세히 안나와 있네요.
windows 7 64bit 환경인데 windows10과 많이 다르지 않을 거라 생각하는데 왜 안되는거죠.

atari-py make 하는 것도 되지 않네요.

그리고 microsoft visual studio 14버젼이가 필요한가요?
pip install 과정 중에 에러가 가는데 ms 비쥬얼스튜디오와 관련있는 에러인거 같네요.
VC Compiler가 필요한 것인지...

설치 및 환경설정에 대해서 자세한 설명 문서가 있으면 좋겠습니다.

AttributeError: module 'gym' has no attribute 'make'

wiki/install_guide_window.md 페이지의 카트폴 테스트 코드에서 오류가 발생하여 질문드립니다.

import gym
env = gym.make('CartPole-v0')
env.reset()
for _ in range(1000):
env.render()
env.step(env.action_space.sample())


Traceback (most recent call last):
File "C:/Projects/RL_0/test.py", line 2, in
env = gym.make('CartPole-v0')
AttributeError: module 'gym' has no attribute 'make'

breakout_dqn실행문제

제가 breakout_dpn.py 코드를 실행하면

gym에 registration.py에서 문제가 생깁니다.

문제 원인은 PkgResourcesDeprecationWarning: Parameters to load are deprecated. Call .resolve and .require separately. result = entry_point.load(False)로나오는데

이때문에 미리 학습되어 있는 파일을 읽어들이지 못하는것 같습니다.

혹시 이부분에 대한 해결책이 있으신지요?

policy_iteration.py 실행 시 오류 메세지가 나옵니다. 어디가 잘못되었는지 살펴봐 주세요

피씨에 우분투 깔아서 책 74페이지의 RLCode 깃허브 저장소의 설치 방법과 같이pip install -r requirements.txt 를 수행하여 풀그램 설치까지는 완료하였습니다.

그 상태에서 python policy_iteration.py를 실행 시키니 아래와 같은 오류가 나네요.
python은 2.7.12버전입니다.
/workspace/reinforcement-learning-kr/1-grid-world/1-policy-iteration$ python policy_iteration.py
Traceback (most recent call last):
File "policy_iteration.py", line 3, in
from environment import GraphicDisplay, Env
File "/workspace/reinforcement-learning-kr/1-grid-world/1-policy-iteration/environment.py", line 8
SyntaxError: Non-ASCII character '\xed' in file /workspace/reinforcement-learning-kr/1-grid-world/1-policy-iteration/environment.py on line 8, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

혹시 해서 python3로 실행하여 보니, 아래와 같이 에러 표시가 됩니다.
python3 버전은 3.5.2입니다.

mikil17a@PC2linux:/workspace/reinforcement-learning-kr/1-grid-world/1-policy-iteration$ python3 policy_iteration.py
Traceback (most recent call last):
File "/usr/lib/python3.5/tkinter/init.py", line 36, in
import _tkinter
ImportError: No module named '_tkinter'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "policy_iteration.py", line 3, in
from environment import GraphicDisplay, Env
File "/workspace/reinforcement-learning-kr/1-grid-world/1-policy-iteration/environment.py", line 1, in
import tkinter as tk
File "/usr/lib/python3.5/tkinter/init.py", line 38, in
raise ImportError(str(msg) + ', please install the python3-tk package')
ImportError: No module named '_tkinter', please install the python3-tk package
mikil17a@PC2linux:/workspace/reinforcement-learning-kr/1-grid-world/1-policy-iteration$ ^C
mikil17a@PC2linux:/workspace/reinforcement-learning-kr/1-grid-world/1-policy-iteration$ ^C
mikil17a@PC2linux:/workspace/reinforcement-learning-kr/1-grid-world/1-policy-iteration$

어떻게 하면 실행 할 수 있을지 가이드 부탁드립니다.

1-grid-world 1-policy-iteration 코드 에러 질문입니다.

안녕하세요. 1-grid-world 1-policy-iteration 코드 실행 중 다음과 같은 에러가 발생하여 질문드립니다.

if name == "main":
env = Env()
policy_iteration = PolicyIteration(env)
grid_world = GraphicDisplay(policy_iteration)
grid_world.mainloop()
Traceback (most recent call last):
File "C:\Users\84484\AppData\Local\Programs\Python\Python39\lib\code.py", line 90, in runcode
exec(code, self.locals)
File "", line 109, in
File "C:\Users\84484\PycharmProjects\pythonProject\venv\environment.py", line 30, in init
self.canvas = self._build_canvas()
File "C:\Users\84484\PycharmProjects\pythonProject\venv\environment.py", line 68, in build_canvas
self.rectangle = canvas.create_image(50, 50, image=self.shapes[0])
File "C:\Users\84484\AppData\Local\Programs\Python\Python39\lib\tkinter_init
.py", line 2790, in create_image
return self.create('image', args, kw)
File "C:\Users\84484\AppData\Local\Programs\Python\Python39\lib\tkinter_init
.py", line 2776, in _create
return self.tk.getint(self.tk.call(
_tkinter.TclError: image "pyimage89" doesn't exist

확인 한번 해주시면 감사하겠습니다.

2-cartpole 2-actor-critic의 VisibleDeprecationWarning 오류 (넘파이 버전문제??)

안녕하세요. 항상 감사하게 잘 공부하고 있었는데 예제 실행과정에서 에러가 나서 질문드립니다.

VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarray.

result = getattr(asarray(obj), method)(*args, **kwds)

문제가 되는 줄은 [2-actor-critic] 폴더 내부의 train 파일 line 103 인 것 같은데요.

state = np.reshape(state, [1, state_size])

구글링을 해보니
numpy 1.10 이상부터 지원하지 않는 방식이라고 하는 글도 본 것 같은데
혹시 문제를 해결하려면 어떻게 해야 될까요? numpy를 downgrade하면 될까요?
예제 코드 작성하실 당시의 package specification이 어떻게 되었는지 궁금합니다.

아직 파이썬이나 아나콘다를 활용한 가상환경 패키징에 친숙하지 않아서... ;; 간단한 것일수도 있지만 어떻게 해결해야 할지 막막하게 느껴져서 질문드립니다.
좋은 책 내주셔서 감사합니다.

+) 추가

2-actor-critic 내부의 train 뿐만 아니라 1-dqn 에서도 train 파일을 실행하면 동일한 에러가 발생합니다.

Installing issues for windows 10 from wiki folder.

안녕하세요.
wiki 폴더 안에 있는 윈도우 설치 (윈도우 10 권장)을 차례대로 설치하였는데요..
나머지는 다 설치를 완료 하였는데 keras, 텐서플로우 등등 10번 즉 pip install -r requirements.txt에서
에러가 발생합니다.
running setup.py installing for scipy .... error
image

이런식으로 뜨는데 왜그런지 알 수 있을까요...?

감사합니다.

SARSA 에러 ModuleNotFoundError: No module named 'environment'

SARSA 코드를 아나콘다에 있는 주피터로 실행시킬려고 하는데요.

evrironment.py 부분을 먼저 실행시켰고 잘 작동됐습니다.

그런데 sarsa_agent.py 부분을 실행시킬려고 하는데 계속 "from environment" 부분이 잘못된 모듈이라고 나오네요. 이럴 때 어떻게 해야 하나요?

결과가 이렇게 나옵니다.

ModuleNotFoundError Traceback (most recent call last)
in ()
2 import random
3 from collections import defaultdict
----> 4 from environment import Env
5
6

ModuleNotFoundError: No module named 'environment'

이렇게 오류가 계속 뜹니다.

같은 주피터 노트북에 실행 시켜도 이렇게 나오고
environment.py과 sarsa_agent.py 를 따로 실행 시켜도
environment.py 부분은 오류가 안나오는데 sarsa_agent.py 부분만 실행시키면 앞의 오류가 뜨네요.
어떻게 해결해야 하나요?

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.