rlcode / reinforcement-learning-kr Goto Github PK
View Code? Open in Web Editor NEW[파이썬과 케라스로 배우는 강화학습] 예제
License: MIT License
[파이썬과 케라스로 배우는 강화학습] 예제
License: MIT License
책을 구매해서 세미나 형식으로 공부를 하고 있는데 그림과 수식 파일이 없어서 발표자료 만들기가 힘드네요.. 따로 올려주시진 않나요?
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"
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
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'
처음에 등장하는 곳은 1,1지점이 아니라 다른 지점으로 설정이 가능한가요?
안녕하세요. 좋은 책으로 즐겁게 공부하고 있습니다.
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를 선택할 확률이라는 부분에서 오류가 있는 것 같습니다.
혹시 제가 잘못 이해하고있다면, 보충 설명이나 자료 공유해주시면 감사하겠습니다.
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가 맞지 않습니다.
1-grid-world/5-q-learning/q_learning_agent.py 에서
epsilon이 0.9로 설정되어 random action 을 자주 하게됩니다.
소스 : reinforcement-learning-kr/1-grid-world/1-policy-iteration/environment.py
12:POSSIBLE_ACTIONS = [0, 1, 2, 3] # 상, 하, 좌, 우
위 주석에서 [상,하,좌,우] -> [좌,우,상,하] 로 되어야 할듯 합니다~
안녕하세요.
책에 있는 예제를 돌려보는데, 돌리면 초기 선언 함수에서 아래와 같은 에러가 발생하는데요. 왜 그런건가요?
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.
안녕하세요. 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
확인 한번 해주시면 감사하겠습니다.
안녕하세요.
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 64bit 환경인데 windows10과 많이 다르지 않을 거라 생각하는데 왜 안되는거죠.
atari-py make 하는 것도 되지 않네요.
그리고 microsoft visual studio 14버젼이가 필요한가요?
pip install 과정 중에 에러가 가는데 ms 비쥬얼스튜디오와 관련있는 에러인거 같네요.
VC Compiler가 필요한 것인지...
설치 및 환경설정에 대해서 자세한 설명 문서가 있으면 좋겠습니다.
7-reinforce에서 reinforce_agent.py를 실행하면
module 'tensorflow' has no attribute 'get_default_graph' 에러가 발생합니다.
특이 사항은 Tensorflow 2.0.0-aplha0'로 업그레이드 했습니다.
에러가 왜 나는지 답변 부탁드립니다.
SARSA 코드를 아나콘다에 있는 주피터로 실행시킬려고 하는데요.
evrironment.py 부분을 먼저 실행시켰고 잘 작동됐습니다.
그런데 sarsa_agent.py 부분을 실행시킬려고 하는데 계속 "from environment" 부분이 잘못된 모듈이라고 나오네요. 이럴 때 어떻게 해야 하나요?
BreakoutDeterministic-v4 A3C코드를 그대로 실행시켜 보았는데요
GTX 1060ti 환경에서 약 6시간 정도 경과-episode는 7000만회에 근접중- score가 0값으로만 보여주고있습니다. 책에서는 26시간정도 학습시켜서 좋은결과가 나왔다고 하셔서 지금 기다려보고있긴한데, 아예 학습의 진전이 보이지 않아서 문제가 생긴거 아닌가하는 궁금증이 생깁니다.
안녕하세요?
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()
제가 잘못 이해하고 있는건지요??
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'
안녕하세요.
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
에러 내용 : 예외가 발생했습니다. 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()
안녕하세요. 항상 감사하게 잘 공부하고 있었는데 예제 실행과정에서 에러가 나서 질문드립니다.
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 파일을 실행하면 동일한 에러가 발생합니다.
안녕하세요.
'reinforcement-learning-kr/3-atari/1-breakout/breakout_a3c.py' 코드에서 매우 높은 학습 결과(성능)을 나타내는 모델의 weights 저장한 후 다시 불러와서 play할 때에, 마치 처음 학습하는 것과 같이 항상 같은 값(액션)을 계속 리턴합니다.
비슷한 문제가 다루어 지는지 몇몇 이슈를 확인해 보았었는데, optimizer와 loss를 모델의 weights과 serializing 해야 한다는 내용들도 있고... 어떤 문제가 있는지 감이 잡히지 않습니다. 시원한 답변 부탁드립니다.
감사합니다.
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 로 바꾸어야 될거 같습니다.
MC방법에서는 first visit, every visit 방식이 있는 것으로 알고 있습니다.
코드 구현은 last visit 방식인데, 이유가 있나요?
좋은 책을 출판해 주신 것에 대해서 감사합니다.
play_dqn_model.py 를 이용해서 기존해 훈련하신 모델을
실행을 했는데 agent 가 계속 오른쪽에 붙어 있고
score 는 계속 0 입니다.
코드에 아래와 같이 되어 있습니다.
agent.load_model("./save_model/breakout_dqn_5.h5")
아마도 환경적인 문제인 것 같은데 해결책이 있으면
부탁을 드립니다.
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를 붙여줘야 된다고 생각합니다)
제 생각이 틀리다면, 지적 부탁드립니다
감사합니다
안녕하세요 책을 재밌게 읽고있는 학생입니다, tensorflow는 아직 파이썬 3.7버전에서 install을 할 수 없나요? 혹시 방법을 알고 계시면 알려주세요.
감사합니다
제가 breakout_dpn.py 코드를 실행하면
gym에 registration.py에서 문제가 생깁니다.
문제 원인은 PkgResourcesDeprecationWarning: Parameters to load are deprecated. Call .resolve and .require separately. result = entry_point.load(False)로나오는데
이때문에 미리 학습되어 있는 파일을 읽어들이지 못하는것 같습니다.
혹시 이부분에 대한 해결책이 있으신지요?
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 부분만 실행시키면 앞의 오류가 뜨네요.
어떻게 해결해야 하나요?
안녕하세요. 책을 보고 많은 도움을 받고 있습니다. 추가적으로 코드를 보며 궁금증이 생겨 이렇게 글을 남깁니다.
질문은 크게 두 가지입니다. 코드를 보면 각 worker agent들이 global network의 파라미터를 직접 학습하고 주기적으로 global network의 파라미터들을 worker agent로 셋팅하는 것으로 구현되어 있습니다. 첫 번째 질문은 이렇게 글로벌 네트워크에 동시다발 적으로 접근하여 파라미터를 변경해도 상관없는지와 만약 상관이 없다면 굳이 worker agent에도 모델을 두는 이유가 궁금합니다. 그냥 여러 agent가 global network의 파라미터만 변경 시켜도 상관없는 것이 아닌가요?
page.53쪽에서
오른쪽으로 행동을 취할 경우 1의 보상을 받는다고 적혀있는데,
아래->오른쪽, 오른쪽->아래 의 행동을 취해야 1의 보상을 받는게 아닌지요.
잘이해가 가지 않아 질문드립니다.
그리고, 상,하,좌,우 에대한 가치함수는 임의로 정한 것이지요?
답변기다리겠습니다. 감사합니다.
단락에서
'벨만 기대 방정식을 이용한 것은 정책 이터레이션이며, 벨만 최적 방정식을 이용한 것이 정책 이터레이션입니다.'
-->
'벨만 기대 방정식을 이용한 것은 정책 이터레이션이며, 벨만 최적 방정식을 이용한 것이 가치 이터레이션입니다.
으로 바뀌어야 할 것 같습니다만 맞나요?
#17 와 마찬가지로 일단은 오탈자로 등록 해보겠습니다.
감사합니다.
안녕하세요 좋은 책으로 강화학습 잘 공부하고 있습니다.
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를 안다 치고 데모를 위해 미리 알고 있는 상태전이확률로
정책을 얻어내는 것이라면 추가로 코멘트가 있어야 할 것 같습니다.
강화학습을 공부할 책이 별로 없었는데 덕분에 잘 공부하고 있습니다.
감사합니다.
피씨에 우분투 깔아서 책 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$
어떻게 하면 실행 할 수 있을지 가이드 부탁드립니다.
안녕하세요
책을 읽으며 실습을 진행하는 중에 제공해주신 코드실행시 오류가 발생하여 문의 드립니다.
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)
감사합니다.
p.85 쪽에 아래 식이 두 번이 나옵니다.
value += self.get_policy(state, action)
부분이 모두
value += self.get_policy(state)[action]
이걸로 바뀌어야 할 것 같습니다. 맞나요?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.