Model-Free Episodic Control 모델로 학습해보기

과거 11회로 PC를 자작한 후, Ubuntu 14.04, CUDA, cuDNN, chainer, dqn, LIS, Tensorflow, OpenAIGym을 순차적으로 인스톨 해, 몇개의 모델을 달렸다. 특히 전회는 Pseudo-count를 학습시키기 위해 진행했지만, dependencieses의 인스톨에 있어서 opencv3가 잘 인스톨할 수 ​​없어, 좌절하고 있다.
ぃ tp // 코 m / 설마 46 / ms / 괄호 dc177d0c34d165b73

이번에는
Frank He(ShibiHe)씨가 작성한 Model-Free Episodic Control 모델의 코드로 OpenAIGym상에서 학습시킨다.
C. Blundell씨 등 DeepMind의 「Model-Free Episodic Control」논문은 이쪽.
h tp // // r ぃ v. rg / pdf / 1606.04460v1. pdf
내용을 매우 단적으로 말하면, episodic memory를 사용해 해마를 본뜬, 라는 점.

Frank He씨의 GitHub 상의 코드는 이쪽.
htps : // 기주 b. 코 m / 스데에 p 라자 / 모로 l F
대략 본 바, Theano를 사용하고 있다.

GitHub에서 코드를 가져옵니다.



적당한 디렉토리에 git clone한다.
git clone https://github.com/ShibiHe/Model-Free-Episodic-Control.git

dependencies 설치



아무래도 새롭게 Lasagne이라고 하는 것과, annoy라고 하는 것이 필요하다.

우선 Lasagne 설치. 잘 모르겠지만, 우선 pip로 시험해 본다.
sudo pip install lasagne

성공한 것 같다. 다음 annoy. 이것은 득체가 있을지도 모르기 때문에, 우선 조사해 본다. github 여기
htps : // 기주 b. 코 m / s 포치 fy / 안오 y
에 설명이 있지만, 우선 이런 일

하는 것 같습니다.

이것도 pip으로 갈 수 있는 것 같다.
sudo pip install annoy

annoy-1.8.0이 설치되었습니다.

우선은 default로 달려 보자



아무 생각 없이
THEANO_FLAGS='device=gpu0, floatX=float32' python run_nature.py

그렇다면
ImportError: No module named sklearn.neighbors

라고 나왔다. scikits-learn이라는 것이 필요하다. 따라서 설치한다.
sudo pip install -U scikit-learn

run_nature.py를 다시 실행하면 제안
No ROM File specified or the ROM file was not found.

라고 나왔다. ROM가 그 곳에 없었기 때문에 예상대로. 우선 run_nature.py의 23행에 지정된 default ms_pacman.bin을 넣는다.

그러나 어디 디렉토리에 넣어야할지 모르겠다. README에는

Model-Free-Episodic-Control

├ dqn_ep -> source codes

├ 롬 -> 게임 롬

└ README.md

라고 하는 기술이 있으므로, dqn_ep와 같은 계층에 roms라고 하는 폴더를 만들어, 그 안에 넣어 본다. 다시 실행.

뭔가 학습이 시작된 것 같지만, 평소와 같은 게임의 화면이 나오지 않는다. rom에 문제가 있습니까?
THEANO_FLAGS='device=gpu0, floatX=float32' python run_nature.py
Using gpu device 0: GeForce GTX 1070 (CNMeM is disabled, cuDNN 5005)
/usr/local/lib/python2.7/dist-packages/theano/tensor/signal/downsample.py:6: UserWarning: downsample module has been moved to the theano.tensor.signal.pool module.
  "downsample module has been moved to the theano.tensor.signal.pool module.")
/media/ohmasa/several data/home/ohmasa/openAIGym/model_free_episodic_control1/Model-Free-Episodic-Control/dqn_ep/q_network.py:178: UserWarning: theano.function was asked to create a function computing outputs given certain inputs, but the provided input variable at index 1 is not part of the computational graph needed to compute the outputs: <CudaNdarrayType(float32, col)>.
To make this warning into an error, you can pass the parameter on_unused_input='raise' to theano.function. To disable it completely, use on_unused_input='ignore'.
  givens=train_givens, on_unused_input='warn')
INFO:root:OPENING ms_pacman_09-19-00-15_0p00025_0p99/results.csv
INFO:root:training epoch: 1 steps_left: 250000
INFO:root:steps/second: 1005.88, avg: 20.12
INFO:root:training epoch: 1 steps_left: 249975
INFO:root:steps/second: 1133.29, avg: 42.38
INFO:root:training epoch: 1 steps_left: 249970
INFO:root:steps/second: 1110.49, avg: 63.74
INFO:root:training epoch: 1 steps_left: 249964
INFO:root:steps/second: 1100.99, avg: 84.49
INFO:root:training epoch: 1 steps_left: 249957
INFO:root:steps/second: 432.21, avg: 91.44
INFO:root:average loss: 3.1379
INFO:root:testing epoch: 1 steps_left: 125000
INFO:root:training epoch: 2 steps_left: 250000
INFO:root:steps/second: 375.21, avg: 97.12
INFO:root:average loss: 3.1827
INFO:root:training epoch: 2 steps_left: 249972
INFO:root:steps/second: 447.47, avg: 104.12
INFO:root:average loss: 3.1154
INFO:root:training epoch: 2 steps_left: 249967
INFO:root:steps/second: 447.03, avg: 110.98
INFO:root:average loss: 2.8808
INFO:root:training epoch: 2 steps_left: 249961
INFO:root:steps/second: 515.27, avg: 119.07
INFO:root:average loss: 3.5165
INFO:root:training epoch: 2 steps_left: 249954
INFO:root:steps/second: 359.12, avg: 123.87
INFO:root:average loss: 3.1382
INFO:root:testing epoch: 2 steps_left: 125000
INFO:root:training epoch: 3 steps_left: 250000
INFO:root:steps/second: 350.62, avg: 128.40
INFO:root:average loss: 3.1239
INFO:root:training epoch: 3 steps_left: 249950
INFO:root:steps/second: 359.13, avg: 133.02
INFO:root:average loss: 3.2046
INFO:root:training epoch: 3 steps_left: 249855

여기까지 1시간 정도. 학습 진행이 너무 느리지 않습니까?
INFO:root:steps/second: 415.57, avg: 391.70
INFO:root:average loss: 3.2587
INFO:root:training epoch: 47 steps_left: 249963
INFO:root:steps/second: 398.32, avg: 391.83
INFO:root:average loss: 2.7436
INFO:root:training epoch: 47 steps_left: 249952
INFO:root:steps/second: 317.72, avg: 390.35
INFO:root:average loss: 3.0604
INFO:root:testing epoch: 47 steps_left: 125000
INFO:root:training epoch: 48 steps_left: 250000
INFO:root:steps/second: 337.22, avg: 389.29
INFO:root:average loss: 3.1287
INFO:root:training epoch: 48 steps_left: 249973

48epoch로 15시간 정도. run_nature.py에
STEPS_PER_EPOCH = 250000
EPOCHS = 200
STEPS_PER_TEST = 125000

그리고 있다. 48ecpoch에 1,200,000steps 정도? 일단 멈추고 다시
STEPS_PER_EPOCH = 100000
EPOCHS = 50
STEPS_PER_TEST = 50000

로 재학습. 6시간 정도에 학습이 끝났다.
INFO:root:steps/second: 359.80, avg: 378.48
INFO:root:average loss: 3.1362
INFO:root:training epoch: 49 steps_left: 99890
INFO:root:steps/second: 319.69, avg: 377.31
INFO:root:average loss: 3.0497
INFO:root:testing epoch: 49 steps_left: 50000
INFO:root:training epoch: 50 steps_left: 100000
INFO:root:steps/second: 333.04, avg: 376.42
INFO:root:average loss: 3.2018
INFO:root:training epoch: 50 steps_left: 99974
INFO:root:steps/second: 319.29, avg: 375.28
INFO:root:average loss: 3.0544
INFO:root:testing epoch: 50 steps_left: 50000

좋은 웹페이지 즐겨찾기