From 50d9f41db25d14bba0ec7ebdd6922ef784adfeef Mon Sep 17 00:00:00 2001 From: Woongwon Date: Sat, 22 Apr 2017 08:37:56 +0900 Subject: [PATCH 1/3] add Mountain car environment --- .../1. DQN/MountainCar_DQN.py | 59 +++++++++--------- .../1. DQN/MountainCar_play.py | 0 .../1. DQN/save_graph/Cartpole_DQN.png | Bin 16184 -> 0 bytes .../1. DQN/save_graph/Cartpole_DQN14.png | Bin 18282 -> 0 bytes .../1. DQN/save_graph/MountainCar_DQN.png | Bin 0 -> 10920 bytes .../1. DQN/save_model/Cartpole.h5 | Bin 17888 -> 0 bytes .../1. DQN/save_model/Cartpole10.h5 | Bin 17888 -> 0 bytes .../1. DQN/save_model/Cartpole8.h5 | Bin 17888 -> 0 bytes .../1. DQN/save_model/Cartpole_DQN1.h5 | Bin 17888 -> 0 bytes .../1. DQN/save_model/Cartpole_DQN13.h5 | Bin 18144 -> 0 bytes .../1. DQN/save_model/Cartpole_DQN14.h5 | Bin 18144 -> 0 bytes .../{Cartpole9.h5 => MountainCar_DQN.h5} | Bin 17888 -> 13088 bytes 12 files changed, 28 insertions(+), 31 deletions(-) delete mode 100644 Code 4. Mountain Car/1. DQN/MountainCar_play.py delete mode 100644 Code 4. Mountain Car/1. DQN/save_graph/Cartpole_DQN.png delete mode 100644 Code 4. Mountain Car/1. DQN/save_graph/Cartpole_DQN14.png create mode 100644 Code 4. Mountain Car/1. DQN/save_graph/MountainCar_DQN.png delete mode 100644 Code 4. Mountain Car/1. DQN/save_model/Cartpole.h5 delete mode 100644 Code 4. Mountain Car/1. DQN/save_model/Cartpole10.h5 delete mode 100644 Code 4. Mountain Car/1. DQN/save_model/Cartpole8.h5 delete mode 100644 Code 4. Mountain Car/1. DQN/save_model/Cartpole_DQN1.h5 delete mode 100644 Code 4. Mountain Car/1. DQN/save_model/Cartpole_DQN13.h5 delete mode 100644 Code 4. Mountain Car/1. DQN/save_model/Cartpole_DQN14.h5 rename Code 4. Mountain Car/1. DQN/save_model/{Cartpole9.h5 => MountainCar_DQN.h5} (51%) diff --git a/Code 4. Mountain Car/1. DQN/MountainCar_DQN.py b/Code 4. Mountain Car/1. DQN/MountainCar_DQN.py index 84802b76..e652f794 100644 --- a/Code 4. Mountain Car/1. DQN/MountainCar_DQN.py +++ b/Code 4. Mountain Car/1. DQN/MountainCar_DQN.py @@ -8,15 +8,15 @@ from keras.optimizers import Adam from keras.models import Sequential -EPISODES = 300 +EPISODES = 5000 -# this is DQN Agent for the Cartpole +# this is DQN Agent for the MountainCar # it uses Neural Network to approximate q function # and replay memory & target q network class DQNAgent: def __init__(self, state_size, action_size): - # if you want to see Cartpole learning, then change to True + # if you want to see MountainCar learning, then change to True self.render = False # get size of state and action @@ -27,12 +27,12 @@ def __init__(self, state_size, action_size): self.discount_factor = 0.99 self.learning_rate = 0.001 self.epsilon = 1.0 - self.epsilon_decay = 0.999 + self.epsilon_decay = 0.99999 self.epsilon_min = 0.01 self.batch_size = 64 - self.train_start = 1000 + self.train_start = 100000 # create replay memory using deque - self.memory = deque(maxlen=2000) + self.memory = deque(maxlen=100000) # create main model and target model self.model = self.build_model() @@ -45,8 +45,7 @@ def __init__(self, state_size, action_size): # state is input and Q Value of each action is output of network def build_model(self): model = Sequential() - model.add(Dense(24, input_dim=self.state_size, activation='relu', kernel_initializer='he_uniform')) - model.add(Dense(24, activation='relu', kernel_initializer='he_uniform')) + model.add(Dense(64, input_dim=self.state_size, activation='relu', kernel_initializer='he_uniform')) model.add(Dense(self.action_size, activation='linear', kernel_initializer='he_uniform')) model.summary() model.compile(loss='mse', optimizer=Adam(lr=self.learning_rate)) @@ -67,13 +66,15 @@ def get_action(self, state): # save sample to the replay memory def replay_memory(self, state, action, reward, next_state, done): self.memory.append((state, action, reward, next_state, done)) - if self.epsilon > self.epsilon_min: - self.epsilon *= self.epsilon_decay # pick samples randomly from replay memory (with batch_size) def train_replay(self): if len(self.memory) < self.train_start: return + + if self.epsilon > self.epsilon_min: + self.epsilon *= self.epsilon_decay + batch_size = min(self.batch_size, len(self.memory)) mini_batch = random.sample(self.memory, batch_size) @@ -109,21 +110,21 @@ def save_model(self, name): if __name__ == "__main__": # in case of CartPole-v1, you can play until 500 time step - env = gym.make('CartPole-v1') + env = gym.make('MountainCar-v0') # get size of state and action from environment state_size = env.observation_space.shape[0] - action_size = env.action_space.n - + action_size = 2 # env.action_space.n agent = DQNAgent(state_size, action_size) scores, episodes = [], [] + action_fake = 0 for e in range(EPISODES): done = False score = 0 state = env.reset() + state = np.reshape(state, [1, state_size]) - # agent.load_model("./save_model/cartpole-master.h5") while not done: if agent.render: @@ -131,11 +132,15 @@ def save_model(self, name): # get action for the current state and go one step in environment action = agent.get_action(state) - next_state, reward, done, info = env.step(action) - next_state = np.reshape(next_state, [1, state_size]) - # if an action make the episode end, then gives penalty of -100 - reward = reward if not done or score == 499 else -100 + if action == 0: + action_fake = 0 + if action == 1: + action_fake = 2 + next_state, reward, done, info = env.step(action_fake) + next_state = np.reshape(next_state, [1, state_size]) + if reward > -1: + reward = 100 # save the sample to the replay memory agent.replay_memory(state, action, reward, next_state, done) # every time step do the training @@ -144,24 +149,16 @@ def save_model(self, name): state = next_state if done: - env.reset() - # every episode update the target model to be same with model - agent.update_target_model() - # every episode, plot the play time - score = score if score == 500 else score + 100 + if score > -200: + score = score - 100 scores.append(score) episodes.append(e) pylab.plot(episodes, scores, 'b') - pylab.savefig("./save_graph/Cartpole_DQN14.png") + pylab.savefig("./save_graph/MountainCar_DQN1.png") print("episode:", e, " score:", score, " memory length:", len(agent.memory), " epsilon:", agent.epsilon) - # if the mean of scores of last 10 episode is bigger than 490 - # stop training - if np.mean(scores[-min(10, len(scores)):]) > 490: - sys.exit() - # save the model - if e % 50 == 0: - agent.save_model("./save_model/Cartpole_DQN14.h5") \ No newline at end of file + # if e % 50 == 0: + # agent.save_model("./save_model/MountainCar_DQN.h5") \ No newline at end of file diff --git a/Code 4. Mountain Car/1. DQN/MountainCar_play.py b/Code 4. Mountain Car/1. DQN/MountainCar_play.py deleted file mode 100644 index e69de29b..00000000 diff --git a/Code 4. Mountain Car/1. DQN/save_graph/Cartpole_DQN.png b/Code 4. Mountain Car/1. DQN/save_graph/Cartpole_DQN.png deleted file mode 100644 index 49114fd67189e8e51835aca62f61d84bb0728cd8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16184 zcmeHuXH-;Mm+c`4C{ewLfCL3ZB`Q&}q6868keo$w7K#jo2~Y`wN)93*l0l$~42pu} z91AEA$rKq1D5!e-_;r7`-|HUTulvvY^Blv$fI4;dKKrb_)?9PW{qmlcD*Xwz6A%Q^ ztE=78fgth_2qK%Jp#p!A=pFwJeo%VeRDVDN{sq!J3J1R*cULp=gdj#M_&?ca#T*9+ z;)c|3-FV=ef}8LQe6UkT+Q2`u(Y&B`>O#K22f-7}%@vN%9m|DB^0Hr@+2N-@^Zl5| zjY5q||6=`s+m3oAdUvv!1uD5ehTKt#_$YYnM$CsdA^xo;36!y01fJCEVy(Q1i5(q@ z*XMTv<>tQP1wFgwMc??%r)(W@##@~Y1#_A@ds&|a{0!N<0FgtGG#wce1T|XGgn+*> zC_|JGzHm z~zrA3EV2$I3 zP&ekgQu!nfDcaiFzErY75Yvh1mdrHyfP?y$)Np8oYO=lF$jAtOJ+TpQ-LQ}6Ubumq zQ1kqE-jq5kv{tjGP-R*aV$cwL6xg1hpRZ?XT2N$Glc$@b#U}4xenmil0(IZqyy)Y{ z3y6iD8&y?R)i@N!YoRB@mkVqPrExyoTcs#PqHo<+mu&rFx%k#S*ZO_iI^w}{l9XH8 zm$EVmt8bKM{)^cM>rIS&>Iekl%9SfR!NK+V1%?@^vOY^o`NjJF{?(kpd()L%wBVL< zd@j&k4GrDk;NZ9WdU|^Pt5x&jc3tOEgLX$_vy94YbCD#Xan<8&m58$$Xl$?vyQFiE z>{@MRZLJ(V>$O{qa_b?V?k0XDtk!6=va)U{oC9H9sotj17+dbQWy}26Ukg8Zq6ZSL zT0by17gh(4*#GqzwVt8jf(hE9A$VypKmLw}2A_I%b~c-|`-jcV&A{adHi(CoXJy^OW0A-X6eE;jABfku^Xh?xo2HPOvm){A#5(^m(u>S0 zi<=DRXcUmx`cGT+MB{_){!d%c*F&MRv>-Ov+gn?EOItYeg-lQjYCynr=@}1Bssq?ZeueWpY6KSdgcCt?0bg_buw?z zKRTAfw%;rG&Z_~mTR)=4 zD~5`}SqAw%d$+2W51mKS%{v@vuTf8TrO@Hdc`c@)yfxtNkT%;z}znzj%n9% zY0We_qqRDG8o0R^u41?i=k4?z860```r|Ary0ahhi>mLW2kj=F5i-uIS*ths@#6=j z9CSQ?gEgf&exj{CTdX_6LS8KpfzUSyx%K{?9n`Qt$8P2~`~HAPSQ{)fkxKO*bAZFV z8nJv)-T!c-<$Y}I$KFiU{7;`$GF2k`B3Q)&*R(Y?2fw|bl?Xoct(tH}tc={ZZiyOP zLy`jW8ID871HN8)#r2MR{i5X0rZ;E%)`I!v_a7ZPD*syU`MPxCjlF5;4N|F^pB$%+ zon3xj-W`xs^y4WSKN07VStf20IbjU%6^PRAsm*rO*dPO$<${sn(C-qiDcgrz^f<-C z8%ff=WB#X(W3iNtlG9vFA%>WShKy%n4RgVcXz!P2yJBO`bI6VK%wcbG*EhV~=2U{* zU)^i6aB82Dn_Q=+1eGU*_eP^KuW$9`r*N6E6e9+)71wlC%e<+qq%NVa41<&kUJ!mt zah{~k%@|&bR+KE?_v!fyi%lV;gc`kTry1=T;98b^Vpm#92`+Ay0!UKLr~)Z)c}eLZ zoDeN}q{b~#76F~$rX!%@S@N`SxuLYL^C=L#s@Tj8EI87SGHf`b2bsB9LG^1?F-J}~ z$Hz7MV39{of%vdEiQsE=Q_-LzO7_*D2bml1V4be39%@{RDb%6Wt zf%}Jq@27h_-MJ#r=}p)j8hr9y71Y;TE2S;pOd1LbrYFl?Cm!lDhV;Od_9QKy?gPHQ ze69YijCVw^yw)xbZCm4J0p|Xg8_fLz%35`5J2xkkI7vaB_4Mh&(99#nqukM8Qc!!F zQtY2g^mR{5*FC)LyN0dOWxK}fzau>wCuB=|SCY(jc>R`x6RV zS^gHVw5IUVem?jiQc%=r6uf!5?5G=QY(O1L3tm5yUPXnz!IU7oWCE_N8wDoE0?-Wi z9A{vUGj#x^sW)nrc(^q(Od-tyU+sw>w?;kNxkD@_UBj@LpC$OOd?OJXx>5_l1_t8#8#dkdXuE71ux`1$ zQJng)e zUJjtKNiP0*p+(ikkE_@e2+Cne!t<+hX%=<&INfjrAtWYgfTp6 zKU^cxN|s3Wu>HA4q(K}*><*|9AQ8@-^qt$D`r7y;?TBlCccpA2|M>2WKa-sBu?-lP zUS0~1@7EH;#9M&ncD{|K z4T|o>!-WBBDQ0FJ5^1kemS@qNPI#T^8r^{Nq)qexfwzdXg92= z*B#z9O>qv{B>AAD=-F}4Y@f-iIgFg|`ucvEBy+4Eb+Ur6{7anW;MaM+Y%9_vsG;Us zS}Me*+C7t6LpJG>jMPN+J>}nUoJ!K-)%jfXEU-)mrbSbB1aI6cH~Ee2{dsz_Ud46t zX^^NwH21^4%(iDX92u2$c*hI(VuLkqvWk^dXz{m3baB}Wz=1Q6>XU?{6^S73&UZ;* zCfj2-+?!dS^e-;b+mY3Y6muaXEHq1h^D!|7_+E8VQB1GxQ>Lk5DZUF9T&06KyeVoNbXVn4$Ig_36&yChn1NYVdU27fPjN zXOYd_0T)G2MF#vlP&8nL!2Yz}KGChnB`xn|-;dbEiD6n55+qKsgRh@kSuVD2U?dSX#@ZUt8?TrPi;>@s+twgS z3xg+*yM?h99}$v^JSY8Z2|rk@O&C)m!QB}KGoAt9q0IlXfhbXp>FSig^qzZu&~v^F z$F-VN=It`&bqO!Tz}n~TU0T&r`a{PdcT`v~f<&A?2NvG_66r~7alK46X0oc^nUVF> zgiDyfkF{jit+}CL(n?vVM(IW+Wk3`ClYRuE6wA*Ic1dH5!rq6)T6>20*w}{(i9D0t z$6cMf&XvjA-)mn!i0+(6Dw>P$ljKSJ-KC?{fA;A}0%^;gw5M7Ybg=k!SUcbv|xQ=_aUzt*Gl46%b#m0Nl#aP6w?^w))$P`*V5*2KkkhhGsS1 zdO2FD;{MzAdIu!l7yzID&%WR%iNP9DdrbV=6wqxkBX&{K(MYDU$JF z`s-z+pZB-tdxNLxi580T{%Xkm*ViY|V0=YF;`Ozi;Tc_)6oEyGDS*Rwauko$pRrAh zcx-h_IemS43~njngiJnh$a*jIX^89y73b&c-oGE?=;T!K@W+X|^>4IE@&Tw%n#pI@ zlmY19XY+qhON@3O-+)#BDcb>$TDSP~mvBj+Ab2ozQ zk%~u>SSEvS&T@4$km{$qi|en=a|C%g@6!5K(ee0kNz}Pv6;i$W)RV4ShjIq4-+(&~ z21fT>?vQ#7ly z?MlhLtoz9xzdF%IGhJlEd6Aww?oi|hYL*`{gDWqeXpToNFDEzfo+~`KIpJ-BA08t- zICtU)z*g|nfrZV?Q$8l_`<)t8p~jF^EA-T1up-VVEf%Fi!;k9 zjg37ufg~OEUgClTSyt5liZq%y|DEBmn|V*M-nEIUHDGfwEudpRH+LhKwkr<6UXXc< zUY_P(%8obJ0igXC3Y)8&lb4s*h99dB3K-v|hwRx&qRVw_UF{^(o8=S%-J*U&TiZ`xzI-7!hu%b_`L`{d_~zNKXFf!a=pl)8Wk_BRgt|D#azsKN)#wwgD+TAR3f4pW95D?IyprQ*W zTqRSIlVG^;aurD$c1CXBe}q|AJZ)gcQQ3i{EQ#Ua0V5mx*J37oq*8}-b-nP6ly3*> zLXM8Ma};-W$m6m$W?Ggbr6zk;M$5o6W+xN3mS;fk!Ye^XA@=Ae6WsX5sB+%FefvdG z_0knHp9zHj-gKDq7=K+j^j$~LpDgT4-90>ew|Qgf(#eVO!_25_VK)2A7TFdgnF9hH zs4o%)xSJ%lvIZfwiOKRJN@M zsheMZ;;=?_W&Oxy24Kn%D$x0$*cGXS6Vl{6cT;^-8q)3w8d{><8sz;kN1GaD@;BJ+lqx95s^kue*xU#Mj^--kLTERQ{3#(lA40aGE1j`K;N4&el%-5=kXG+rfO`kC< z*=~$#)@5C`v7iGr6LfQZ{Sa#HecVM3xwCaRlo!%UJW50sbB?+suk9SZxKwuS-B`t2 zUp9xp^&?Hl`81J?ESyh(i+*mxMO&; zVy2kq!6yJ3P7%9o2#xzM+=b+Tr!q+esNRH89Hj6f@Q)G4kkACID zD7C+FZJ2P5X0C5MhLw2O42-ga|qrcb(and`kDeE)nt8YzweFay2@z_>Rd zhhh4Q1Fh9E1(G(ees8F??v{iuIpzyM#wsu(E_Y5GRam+NBH2#CN>J8FedQ)wADa32U%9hahByPB~^(rQkONyHJ6nqbEPM)|x;(mAIVsmsd#i`@q zJ3Y_ehNZn6u!&E^vAcosx&H$5Q93Q}pMaBHD=&(AprN!lKsLW(q zrm{37eefSxhr z=bsDwNI_*mUylI{%>5XC5JT@(ag5ZYy%`5|0q)tK&o+|50sHp_OG^bskdg`f?SF9O zG*`s>osnCS@E{5>q`gEsZ+_Izy-z z9;1Az=RAlfCQb0+|BPw}rDt!uU)!nY!wtYi>FDdnjk}^J1GhA>n@dZM%q%SVPQyij zntQ7f%~=Sp2yp@BF#q#sH4YiCdw?Qyt-(ohJp3F0_dlN+$ZHp_xjRvf=uf%s={0H-uO2JuI{uk> zM92qFg-0c#C)uq&msYq^35;+LfDB%TxsJr7Yc{XE*Cq=iA|l@GE^hd~OHD1z%e!J@ zWAkHW1d@&heO=+q6<-A69n*+yp2%g1LOaZp0!Hgu=t~4iuIu zDxpyd2ln(FG7tFp_}JupOVWIQ9S6uIABEBn*j+hp*zo0x&i?*>Y}Vo7;l;YAb^Viw zr-?EM0HE>$i*XpV>i%bld%eE8JgZKNf;$Fq>&^xB_2vNjvB`LS?(6Tbc+`3d`$aQZ zGPkzY6qM}P-`+J9-Z*1`WZKbPzka-iu>=_fm3U2bN5@@kkJuy&bPKaGYFlF_+ujCQ zTC4BZ%ns!0A}0Oj;q@G=@hJu`D>GXo-m&-N?Y6G2p-PV#alg$+h{e9!fM2X${FDsF zka+l=M!oN643C6mBV>jc)bsxxqx#_f{fvKMOWQg+%J&u^>511ONjMd>KnrL;bPxz- zLb6*Hr+h&nwUQUF4K!Zi6kk+-;D{Tq(j6TgWfQl512e9k-SP&p+aQw&@bTRS6tO;d z8!C}(*{ou=dz0z^fGCcKdmDf;UK%OQY>wi{$C8M6eU4Mmp7ZEKlu6~KlPsXPvr9>q zYuw4oNxK&RLi*vE5Xwi%9ssaN--I4!c-lE&>qB?9x;2K)oy>$l5jR5yDa(pz`yV*8 z$`%E?77Z+TJ91wJa3nJTw0pv}@uqxEP3gR5KB=R`)tW}a>1bKu)mbR~Pf|~~6(s0q zmb$%|Ggm%1{g=`o8sQCY(gk%qL}?QyHgC@1MR_6hKUI=-f{H8vX8-=Hg!n&}^6c-| zcl;dcKgBQvrPd$=kagWdbDSN&H?qSA<|Fi3ShXW%?I z;wwY*W*okE2}f`xxc9$+3H~&D#4+ek^`XI-`M?9A;OG42z1a!|`XB@sivNye*^{@6 zD+Ebf98SlDGIMADHQOrXuU54H8Ryn%xaPiVw?Q2H)Gl0BO%C<`;p8^|aB@x6GSCQI zvQ7cfC;?X>2p4-d@C0hy`TB`Co~RO#$#?&tflWZ&2JE^2eF0%N5r=U@|MLPJU29ad zT;D(Ms1{T=$XqV`!i|A@G26%t$Y{Uo7L4a%*@QWAQ=hh7xd7I)P5K( zvvV3NchEm~3Igh2B^}Scs`pr302)lO!g=%>+$(_8q=R;yfHgfc?@^oBtVnjLJfP`; zOgtEVl4lzfnWd++!aYD91(k|lJ?XmVCs@#%sPPft;mI64^8dGT#Z`F~sB7wRBJMY7 zk&gEwtTND9S_8f>HcQy7S}hjVXV#}~FrPVdFtj*aobJD~l-<{-qpsuNkW0mIZh;mV zEABXO36R)@77Ypu!60e>-tYyjAOy8uT%@oJ3aY!PnUtlgEw9I);{KF3_v6Q#KvryP zZ9Q%%B_g5?p1&S(*p%*52M!Jm zId-SXli87he(`;J`kKi+sG}!F($MiGKB>*u#KhhwCW0}+w8LRt(*A7d#k&a~_P6Gj zCw#Da*!m!fI7U!L78e(dzdU;BHVH@)SpP(0gw#P6G_LV3^u~?Nn%MoTUPeao%aa@2 z?TlKR82kiDVs=rWn?vS$&Ue)Z>;e@G=!^lNW;u;ldcd+@wb$auf&#$_uYOH%L$<3A zpYuBW{uu+;O1R&Y-~7n~6wn?po5Eke9(HYl)iKd%v$8ZL&hYLfN;t(8Rn4)f(^K5Q zK5iE}z+j1=l9JdWf$%D3+d)%VTjPR}giEGIys%zN6o-WOilJt@f|-Lu#_YrD7>aPo z&?jUMqX8d6AM)}kQVIG9SiSF@FbZIVAL9?8`_H!2|4WlY2<5vZN09bb;M{)v;gDci zY9gTip%qwOI{uItSQfN54Nzz!5oEtN+>*|s7*#Hpzc0YMmdQK50~oYK5hQ5d@FmBx zpi!H@zu@T92|88)d?5mywEz1xLn%B?_`PXSC=0|Z21aY=oYLW8JBqGj20Er z9|Z{;Y&(J41`=##;QnJX-{}`uE?s)lKHHaHT+dcAE=mWGk|xMR283N4@C$ zFB?}l>Xl)Na&u!^W{&%kl@t$~!xcB29&@bm4}vz&>^0f~mWy`4E51ukW-pNw64C@+ z!$#rhyXxvMLD~r_20j>-D*q3;Ca$H`WrZkhKHocR-oh ztV6kBT@mW;AuXI>7`47(v~C~@rWY+XurERpBftb=1nH5sAv)Uz{rSI6yWJT zv>^DkhK(MJTue%?CxiU6gJjV6D!7F43;suA37!Bfyk*)K1Oy z`7o~Fp6AC;ms@@%&(6xS-(KkT-)!X{1ibB=O>PV+A6`Syk5b-f;VX} zpFOHHi0~7=(QctaoD`|I58|MDPGu=U&dsEplX_;9@Dw3vSk>o@UjP2hHhb^LjkM9S zj!hTTQmC5lUUGDpto@0aCe7&Sl;bm{K_upORBH14Wxiz?;aUHm>?d7gp_OIP>cx6+3ZFBoB|* zEE+Ffl#VJw^$mQ0*6Cat?LQ|aVs6!{czCRavA{s2j3ct_nfGs!kpywPuRj@S!JDf1 zF}HdQu&2;>HZmsrW|*b?i~vHMnAB?mP(9t5~a zV6+0Q%J~!X5k?obf6)!SMvRo~4WHB?QYiW?_H9tOC5ZB= zz3^XNI5r|mOI}ZA=`)C#L)lBW2!i)!m>j7=daWzYZZPSpCv!hR&fW7WjPn{s@sMd$ z@=*55t^V%dGl4{j;qSJ{msiH8Y|r+E(wF8QgJQ|Zn2xu|3aS*`)U8~t?O!@UUTEro zVi7t~-$g5ufcyAyWaw?d0iKaAimr*gQJp44?b2GUHOhn?+j&JFD|V)>U-3}L^lY-s z$~Vl$x20}o=+{dq{Q2Y6Dt!YcQ|b7#Wo6a|s+Y8`^KB!j8KcZNO1BvKas&3F~m7Lm{iuy5HxXk_;Ys}xn@-PZ84=cX&2Xtk_wj$9!NApEIk5{?#&@s zrn4kGa=K8_+u3(nb!Ky6F^5_!NBn^6uVRf7Y6kJtdBqZsk}fXqQUG1%1o@#`p-^}h zbHOuZx!<#iID0w$m6E10eQim1f=|Nk(4sWQsZHZ+qbS;#oWD)zGyhC>Swf0OYzqxVLHl z`LJQ6zu&}y^n|*@d*tft;P?EJf?QO;iCc`>!?44+qF;aVnO^l2R4WB-_5S%)ZM+Weo zDgjo3hZh6{sxhyJM!(oA%BmXIl@fVV?~#_)5zjVV_GA*cbJmWGl~55avIldVU#%PDzqZu6WS3_ z3+zW-v{Dg9h}}+tnk=c5k_Y(uFitNAUW=e=S~y>83PDqV#1C^gT=+8goQ<5l zSPGFhT9kLfh23c=0avr?7+lAvaTAj^+#Ni0_+^OPq%z(*JCuP_)~8vD&L1D2%0Ub` zY9T+|#Vic|B}{4=@=K3T>4+~QgI#W?A7sT_^DwW_4$q#bmCBd!89y(7=#E*k4`fAY zu#}k@p7l+XO1PidvHS71OFo||E9)F<)uT7zU@Puft?wTZTF?woi7dG#`76D3r&=?& zXhXL>v4~Gi@hQl9uW!dQT#B=@7G<7MtLo7G%e47)UC=*biHskdY@w*mMt zyYU##a&F@=<8G-+*+?nn_t+VQG36esGx48^Z1h_mPPXH%Bg@~|^C4mgvm%|l^Xcfi zp}D|~+uJDSrR)uR-(N33ZC$AP?MzKQKIO!t(?~liDtNYH?ic@rJJ) z=*so=^xl8@D7|i0B8Jd+7E2L}5t3)ltO%+=xq2eR(G%NVi#-{Qi*r=*3_h6NQ?I)# z3lWC*m3hRy*T#L$` z;w1>Km%SRcW5sRnDg*PF!VVNN;Xx&;ert^N_s%dyPT`WX`+VxggvIA+5zgpW8jpxy z1qS9>S}?`IgYGJRJs(0#&j2M+mH&-o_>N{)@4_WZ8@p#IDUDx0nAEg3WRE@cJEwoh zfmpFmOEjykw2Dy9H|#yh`wqztF$s8)Pt#f6e7zh0u(simNr2qwgpVo;*wT0cEG~>T zG)!y9Yse6sot$2x8xHwI4}lXFQ2~YMdN5j^@~HYo>+#Z?aUA2O!K0eg&nW*0WfBnO zW|sOcX{=`wC3H|>^!24(-P5Dw?KM$KD4ekix>#xd;`uEac4D-HQ$dAlZFW{dT?{+k z(G?ihAd!0MYK)d-Y2XRX5*M`iEhdQDn zP}MHhP;q4a;NW))e}F672ffTIgZJBq6rGyh%yqe7f zR9HUQi67m?y``cnK~a^jjM^oyWl!`iXT80NRrR>~l@U61ELF+*;>iX}S?_m4#pvo2 z&%cQ#DQH~RDYI1{HtpZVfi625O5ip2zovE}RDoAyt?Zq0owjEqM6LkwvXfiJUf4cA zM5mlr6gO5;R(%RmD!)$TY|KgXzY}z@4LDq!IB=)~3#O`m{D9zE=hkz@@3hm5&`N7B z**fqE*Id+2D*!;>AU$yNB^4uQ0q8?vBZYoE70@iiq8LJ=<#!W`8i@X80k{g7%z>RN z3>-2G`(P_piv!Lo!NVCUC@j=7GDmM8#*S0)3rvM1F_iGiP@$!8KxJ)L!DEbh<&%x@(pDxV6!lIZ@Bkm{8 zn>tAQpFR(OIhsrH(4D^Dt#4r}32ub>(*wT{*TWR;fo-RHcg(3!m>y8Fw&yq?;5&be zo2)Yd{HiXnPlVF3euO(~^%h_}hGachsk+~XziXMf@9m8OU1#MvI!GyYih%iw|3kLG zn(jZ(+RQ9yal6dc1;z3|g`hWbwOEYSD(GsQpVfh8;FLBc8N_`YH&J5%#0>p-tK^%G@t{Wy(r0-xrK796)1OX!;NY-Zr?d9l`kk~^&9pSG>CdS4ue7+q0x&f3 zS%M$`@iC#hO4{-}?+&&XGXcHm0C)j#Vj#LeI9D@H#G(ig#`lgLJNCHB)E}5cDB{>d zGaULq<%0P;V(aTbFjas98?W;s;m$vJ^KJTPz&*Bgb`Jhvu_ypM%&`JppveI;5rG@i zOO-+NE%auBD0I00BgXGwF-O9_ha0Pu4>T>e`u$ICRUA=Q6M(V_7SW+EOTFIDTY3mS zBO)9xFf~|gp@@AfdoFVr94N`RARP=ZjaB52q1}p~P*5+;L@VwJp_{rh6oL-K_vOrl z;{j35H#)Obke}Z#j~~wj2QKnJ00JDIx!p*?NGaDp%#dzldRFZcn6SjPYu6&?(~*;g zKtlBZO*#AZ>(^CmY_bQlZ?6Eqj_7Ljvhd7%1M{oAtXuQljD}zoFCJN0j4xP|$ZiEf z$KHN7(sdh$8Q$Ay;S$P|4g^%uHQUZ4n*tMbmm#nlc@X#K+3Wmwu7Q}CH<@o{cM}H; zw1c40m+yN(1d9X)w6i%Wk6*pe3tOugHWxET9wBC4i`0usx{N&<_nS{u0Vi-uT_uG+i?M`%4=_E)J&0u`DmGP>6JWT1sE7~hcHv{MZQGfiZ zi>YU)M01{AenfHoL7QQ@eM~86v9L1Ud)Lc>0v*!*7*NZhyfbz9Nin)6&h&X@kodiD zV}pj3?ir*92bG_ zUymRjts&WCBS3b_Z;N=<#30+@yE|&<;uis;P9p01+*xZd&E`bAv_;ww@9RV0sfW+X z`MUSmcwbj(5{&?!y|X!~-o|C^xC2l7U*BIg-&f_Z85kbM%xwu?xpFOdD;Z1KQM28r z5eay_v!Pbl?rUc%DN~eyM^R5-|I@c`H?g(v-u(rrvb^&0fp2XO?UsiM0WnS^JqLWs z^jr#ZxzSaCv5OtZ)?iWB0ZEmCQ|_#L3Sb0vi_Pm|cYy(WN!(}E6o+lFa7AO{TK-}G z`xs&!yRzfwI$3K37D)!M?Gm;fXWz%iYkV2LS`X40o1}9>@WyM4OHxt>V1+*t59bvL zahQ$yd*EP?IY3lLb5ad4?XzDx=l$9)=h(N#@*VtoEyAk~A7fG2o1#edne>ZY**9uF zp=`tdX04u}1x|CdwYSqI!1^~3af~16IfL^}YC1jEyTTfhJ3BitOQj{h^B~pz+woYo zC@~%$Wf1&i%NJ)n!0XWmTXS%55cVd_b*C2tk=ed8Ndk3UMLkK@r$}M{_vu3Oy6V2%aC|A#si;aNHi+0c>CwUg+>c8@5&}sMSX^`9V?)->5iyUt*WMWd zIpDrN@Kqv~hZdhPDwI^eOORfzoGG{MWCI0fk&Cn!2CK&4jF6F;{sR|my&2dj13)ex zEHabLZ-2?UW^`H|mZJg9R|F3JEzibV=mXAJs6en991n#3f%1pzO|e<0wdL-E2!KiEs#zy%7JT}@EJQP=g6;AP6}j#yWKjcyW@ z259kNKrEBb?W|$3K2;c3#W0i$<`W1T)nOodyQP^abYom=G=0WB!eAzv{+#qZ_&67Q zV(|UDcWPg-cB~qp3y6)0$;eO+a|97s?+2m?7Oa4$<;D9ST0qAF;un{D2PlI1`h|D$ ztR?A`PhY&-1IX_kfHCsiu=Ql^VSmntZHLT^mpi-#5&CvX`dMyqu>o)a6h>{Ncy{%| z{!8#Gu}&i;R%~Ln5ydX?);qw8st^PY&@D~Y)f6gp1Ie$VwdAfv;KmD(-h^5e6vJvk z)&-o6DG>ek=SF9@4A6eoXnbxFnvo3V+~HG$F;xIFGV6R867LIfz-!*H^vM`K(nCtPXs z8L%8a<5q$usE!dp9d7`*#ttw1^y8`sP~$Z27HRDF7x6a9W7kGR>sk#^X1RQKLhyXIlc;(S923$T{79jz;M{wqY zWWT*M*#7h9Pf;y}{YTcbZSMh6y$BzzJD=O?v@%i}Y9;Q4X#krd0-W#!NBH`s=Tkf* zK>ar|@k)5gkWeUh)DgZ$C0<16t>ceqE*RXVD;A?t)M(7&vvBC+4^qiKNs~5FW{ydQVa8W97 zmaDP>pKbhoUELXz7U6W8f-1Tuw>@V7mqs}Mfe!yxy#8CZhJOOe|JR4NNnCOlxiXeY TD87P+g4Azo-730i`SgDQ|0`g3 diff --git a/Code 4. Mountain Car/1. DQN/save_graph/Cartpole_DQN14.png b/Code 4. Mountain Car/1. DQN/save_graph/Cartpole_DQN14.png deleted file mode 100644 index 5c0f54d349ecc019279741ca25d18e375db0f604..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18282 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 diff --git a/Code 4. Mountain Car/1. DQN/save_graph/MountainCar_DQN.png b/Code 4. Mountain Car/1. DQN/save_graph/MountainCar_DQN.png new file mode 100644 index 0000000000000000000000000000000000000000..c10bb4541ffd0ecc3dd55a9023e4ab8833b02993 GIT binary patch literal 10920 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 diff --git a/Code 4. Mountain Car/1. DQN/save_model/Cartpole8.h5 b/Code 4. Mountain Car/1. DQN/save_model/Cartpole8.h5 deleted file mode 100644 index 02094b4eb166f9e7d4bcf881253d218f808e7576..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17888 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 diff --git a/Code 4. Mountain Car/1. DQN/save_model/Cartpole_DQN13.h5 b/Code 4. Mountain Car/1. DQN/save_model/Cartpole_DQN13.h5 deleted file mode 100644 index c63a4dc6003a805f0b1650c6ea8af68da3705881..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18144 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 Dx#%e> diff --git a/Code 4. Mountain Car/1. DQN/save_model/Cartpole_DQN14.h5 b/Code 4. Mountain Car/1. DQN/save_model/Cartpole_DQN14.h5 deleted file mode 100644 index d4d4bcd53fd16782618b2bf0a584ac29dcf2ef71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18144 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 I+w0eV1EF^)e*gdg diff --git a/Code 4. Mountain Car/1. DQN/save_model/Cartpole9.h5 b/Code 4. Mountain Car/1. DQN/save_model/MountainCar_DQN.h5 similarity index 51% rename from Code 4. Mountain Car/1. DQN/save_model/Cartpole9.h5 rename to Code 4. Mountain Car/1. DQN/save_model/MountainCar_DQN.h5 index ce883e7d0740731122e53ce836cd117de4ba086d..68f0cbb946c9a9e2f02375e3c5ec27c85fdad048 100644 GIT binary patch delta 1612 zcmYLJdsxhA6mBjx<*wSAl4_-})BP&*`@U}?9tkC-($(g+(z6XKWib`9l}niG&)+JYFuTdfXfle&vB>daXv#@lI%(kxh2n(GgmI=*~yOyjpZ_)plT0KpT{Yd zm*}jp;%e!Bxt-4cJPd22zwF8KX#$7J+Ho9tw5~VDrK(i-!dShpq*PdB!X38z(*NJ( z(@bJ`bvc7odrdmD^(4b*@+1qNiCV)(pHTfTe|!W#2;>heQe<7<#$)5Y>EOmqRa(^K z5Y{$=Y&LyBHf=gVb#&cG+%W^N@#>^gJN?MQ#w5Z|c&fyKr|<#WbF}p5|H<>xmbpru-(d1gX!-|6i-explVGM-s@+W@0bh071mcAYTJxNrVfjW9W zo!EYn97u8lgUs7xf<{(DN@w;^tDT-CsI8IAznn?pvwTQqX+5zzmyXR+U5Glr92r>8 zfa>#}WRA!a3vcfto)x(iy@-UNhYpgfUae@H??aE+B0@qAts!wIT|hfQ07U;0NngL3 z202L~uONeLJtSePnMBxb-2z5=jkx3|9x0a@?cy*V`OfCi^KKAD$J6B(Efq%4%&t^vouS6`T(So#|!F zk=_V=KXeh~EH1-&3nEBzPd>>vUqxKZ-M}R~ndDCS2e*4YrEQCsN@VM9A0%p?Hm$3T zgw^d%w0|gryxDe#s*Ho7H0}nyTXB&N*f~RHm?ivZc$vl-X+etJ68ejo7j0R_hlj4= z%36~rw9Mx!4*T1YF5k_CjZuM+9d(U9c4`sNN*oQAVGi&hRsh}o3DiBt2m;3^P`2F~ zZfPBsG4)-B3XjOQbazTCHS|qW?$4SB`sL-cPsjm&bvFIgXBjMHw4iL29e5bnfzCT8 z(0_lA{??WVLA^H6xiX#xod}?5RT?xaZjg!=KU5mrkkE+SAdsY2;MT2ta7%hb^W0l# z#=J!!mNwA8LhdR?+BiXyk<3IfM`J;{dtw?!C7COhSJ$EDvQtd{PD4blJX6@K`)JYc z9Qb2wEBM=tV&8`Nvzloe*@haPLiH+EdCgi1_Xm<7Ek?xP4pwP3F#sR2&O*Kkh2VCJ zg~-%-uy=3(l8^c*O;f^@(xv}46w3=yuVaxymYacQ%c2$_wJHx4@7kq!(K#1gXcExJ zrK_m+eM9BFK_{kW{#fPpQ~gX=l$uFf;7-R1L`+}!OU517VXIMp;+ss4xGVQC<8a*< z7Zq*5Qh_a7P;1Xl&~HKqhWL11R2xn(2F$-})^MU?4ATU z3sHZFnubf0m8y*6GCX+Ek#SY+qp^H{WU=N0Ih3b7)hJcwT-k@3Uu2x** z8qXU)9Hw8hwgmfdqpjp?O)Nh}uAglNpW~ceXw(@PwdBh{SO=f B!gc@v delta 3623 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 From 07252dc28bbc2a16ba5f2db57aff8b0c175e8775 Mon Sep 17 00:00:00 2001 From: Woongwon Date: Sat, 22 Apr 2017 08:41:26 +0900 Subject: [PATCH 2/3] we will implement DDPG algorithm to mountain car --- .../1. DQN/save_graph/MountainCar_DQN.png | Bin 10920 -> 10875 bytes .../1. DQN/save_model/MountainCar_DQN.h5 | Bin 13088 -> 13088 bytes .../2. DDPG/MountainCar_DDPG.py | 0 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 Code 4. Mountain Car/2. DDPG/MountainCar_DDPG.py diff --git a/Code 4. Mountain Car/1. DQN/save_graph/MountainCar_DQN.png b/Code 4. Mountain Car/1. DQN/save_graph/MountainCar_DQN.png index c10bb4541ffd0ecc3dd55a9023e4ab8833b02993..0ed4e3ae2958baaf3d584194abb7f3e744df4665 100644 GIT binary patch literal 10875 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 literal 10920 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 V25eR>doq3JS^uSu@&7+{**_MO-kbmc delta 1003 zcmVbKtG)&ZH9u{r z6Tc=w=DsNAPd`q@c|Qbp>%Bfyu0EG6xxS@)sXd;Luf9PH#y-DaQ$AIp%f9hk8o%zG zmA*?t{6C5`-@XJMJHKYmi$5ax=RS3ytiR7F(?04f3coJ-0ze26&_9ziQa`&NwZ8P7 z>XYjr2@-gkhClz@_CEQV5Wo2gnZJQVlLjFke{%U!K2apMzJ((JJ_ke`zEVzOzgdh> zKTiXRKXq5PzWWhkKX}Ru7{K)HF2AsGz>^0e9e?a5dB6w3SHA{0raYwZ zT|VAfQNNT^raqWWT|a>Bnm?KzXFoF@HNP{FfIpTe_dei3>%QDmT0nBsnLpwK1-`hq zUcYGIF~0Wyia+#&)V|6WSHGog&%V~I#J>40GQW#kAir-E$G&YA0Kb7PR=$WFLB82x z1i#}nT)np$={&xsNy|Q4NnyWEJOIC@XDyQlBON-1v-mwj zZTh||Q{%l8&p^IimQ}w%iL5@_egwZYdE~yBHrc+4N>RT%al5|VSk}A?CNaNx78$%o z_>*2E8W%3&^}e6T0l&--+P_dH48Z$XP{8;pcax7JAqGo!p1(EHleQxw7e!x9J>trk zJ)n$?yzk~nJ;T=rzUZZAlkX!TPc}ZdJ|hg#KF~arJLi_7JTJ~mKA)d;K5+*uz@4`) zz#9_RJ(vFkK1yHQK6V$sJ_ObryQ{1YJlSyJJoDJfJ%nw_J|-U5KCKO*J{IPBlV2n$ zCx#@izn@4Tz^Wh^KDuN>zJd<^Ju=3eKAG9RKI$CFK6mv}z@6?gldmK>2loG%y{^S^ zlkX%MU{5WHKB}FIKH}0_zIAwyzNfe8zn?uD!1bbqJJ+$8y{bR+zh<)Yzq&8VJ%vOo zKE?0BJS7b}J^oaJKD6OkK2|geK4mT#KH7uiK73{NJ~2oczjqD>zdEQ1J=mp+J+r|G Z_yV(FDC`3QxRkR_EKUXjxRjILAA*Pr+FSqt diff --git a/Code 4. Mountain Car/2. DDPG/MountainCar_DDPG.py b/Code 4. Mountain Car/2. DDPG/MountainCar_DDPG.py new file mode 100644 index 00000000..e69de29b From 58f69e02ccb30e0659bb2599e9e14cd56224a5d3 Mon Sep 17 00:00:00 2001 From: Woongwon Date: Sat, 22 Apr 2017 15:47:21 +0900 Subject: [PATCH 3/3] add stop_gradient --- .../7. Policy Gradient/Gridworld_PG.py | 2 +- .../save_graph/MountainCar_DQN_play.png | Bin 0 -> 18761 bytes .../3. Dueling DQN/Cartpole_DuelingDQN.py | 2 +- .../Cartpole_PolicyGradient.py | 4 +-- .../save_graph/Cartpole_PG.png | Bin 12180 -> 22416 bytes .../save_graph/Cartpole_PG1.png | Bin 0 -> 14168 bytes .../5. Actor-Critic/Cartpole_ActorCritic.py | 2 +- .../1. Breakout/Breakout_DQN.py | 32 +++++++++++------- .../1. DQN/MountainCar_DQN.py | 17 ++++++---- .../1. DQN/save_graph/MountainCar_DQN.png | Bin 10875 -> 11649 bytes .../1. DQN/save_graph/MountainCar_DQN1.png | Bin 0 -> 13996 bytes .../1. DQN/save_model/MountainCar_DQN.h5 | Bin 13088 -> 13088 bytes .../2. DDPG/MountainCar_DDPG.py | 1 + 13 files changed, 35 insertions(+), 25 deletions(-) create mode 100644 Code 2. Cartpole/1. DQN/save_graph/MountainCar_DQN_play.png create mode 100644 Code 2. Cartpole/4. Policy Gradient/save_graph/Cartpole_PG1.png create mode 100644 Code 4. Mountain Car/1. DQN/save_graph/MountainCar_DQN1.png diff --git a/Code 1. Grid World/7. Policy Gradient/Gridworld_PG.py b/Code 1. Grid World/7. Policy Gradient/Gridworld_PG.py index 5bf590fd..ae52a1b4 100644 --- a/Code 1. Grid World/7. Policy Gradient/Gridworld_PG.py +++ b/Code 1. Grid World/7. Policy Gradient/Gridworld_PG.py @@ -41,7 +41,7 @@ def optimizer(self): # Policy Gradient 의 핵심 # log(정책) * return 의 gradient 를 구해서 최대화시킴 good_prob = K.sum(action * self.model.output, axis=1) - eligibility = K.log(good_prob) * discounted_rewards + eligibility = K.log(good_prob) * K.stop_gradient(discounted_rewards) loss = -K.sum(eligibility) optimizer = Adam(lr=self.learning_rate) diff --git a/Code 2. Cartpole/1. DQN/save_graph/MountainCar_DQN_play.png b/Code 2. Cartpole/1. DQN/save_graph/MountainCar_DQN_play.png new file mode 100644 index 0000000000000000000000000000000000000000..6fd16b0a94a3ee79f456432ca5da98aa7ee8202f GIT binary patch literal 18761 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�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 GU&8N~X=XYA literal 12180 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

y0i5P;lf`o7`+1e_?$ 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 diff --git a/Code 2. Cartpole/4. Policy Gradient/save_graph/Cartpole_PG1.png b/Code 2. Cartpole/4. Policy Gradient/save_graph/Cartpole_PG1.png new file mode 100644 index 0000000000000000000000000000000000000000..c95615044983688a2bef48f59261966ca47b94e9 GIT binary patch literal 14168 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

Op^8DQn*UChi&l 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 literal 0 HcmV?d00001 diff --git a/Code 2. Cartpole/5. Actor-Critic/Cartpole_ActorCritic.py b/Code 2. Cartpole/5. Actor-Critic/Cartpole_ActorCritic.py index a0ca4e66..8f455b62 100644 --- a/Code 2. Cartpole/5. Actor-Critic/Cartpole_ActorCritic.py +++ b/Code 2. Cartpole/5. Actor-Critic/Cartpole_ActorCritic.py @@ -64,7 +64,7 @@ def actor_optimizer(self): # Policy Gradient 의 핵심 # log(정책) * return 의 gradient 를 구해서 최대화시킴 good_prob = K.sum(action * self.actor.output, axis=1) - eligibility = K.log(good_prob + 1e-10) * advantages + eligibility = K.log(good_prob + 1e-10) * K.stop_gradient(advantages) loss = -K.sum(eligibility) optimizer = Adam(lr=self.actor_lr) diff --git a/Code 3. Atari Game/1. Breakout/Breakout_DQN.py b/Code 3. Atari Game/1. Breakout/Breakout_DQN.py index b3c26253..82b02821 100644 --- a/Code 3. Atari Game/1. Breakout/Breakout_DQN.py +++ b/Code 3. Atari Game/1. Breakout/Breakout_DQN.py @@ -5,7 +5,7 @@ from collections import deque from skimage.color import rgb2gray from skimage.transform import resize - +from keras import backend as K from keras.models import Sequential from keras.optimizers import RMSprop from keras.layers import Dense, Flatten @@ -16,7 +16,7 @@ class DQNAgent: def __init__(self): - self.render = True + self.render = False self.state_size = (84, 84, 4) self.action_size = 6 @@ -33,7 +33,7 @@ def __init__(self): self.update_target_rate = 10000 self.discount_factor = 0.99 self.memory = deque(maxlen=400000) - self.no_op_steps = 30 + self.not_move_steps = 30 self.learning_rate = 0.00025 self.momentum = 0.95 self.min_gradient = 0.01 @@ -44,20 +44,26 @@ def __init__(self): def build_model(self): model = Sequential() - model.add(Conv2D(32, (8, 8), input_shape=self.state_size, activation='relu', strides=(4, 4), - kernel_initializer='glorot_uniform')) - model.add(Conv2D(64, (4, 4), activation='relu', strides=(2, 2), - kernel_initializer='glorot_uniform')) - model.add(Conv2D(64, (3, 3), activation='relu', strides=(1, 1), - kernel_initializer='glorot_uniform')) + model.add(Conv2D(32, (8, 8), strides=(4, 4), activation='relu', input_shape=self.state_size)) + model.add(Conv2D(64, (4, 4), strides=(2, 2), activation='relu')) + model.add(Conv2D(64, (3, 3), strides=(1, 1), activation='relu')) model.add(Flatten()) - model.add(Dense(512, activation='relu', kernel_initializer='glorot_uniform')) + model.add(Dense(512, activation='relu')) model.add(Dense(self.action_size)) model.summary() - model.compile(loss='mse', optimizer=RMSprop( - lr=self.learning_rate, rho=self.momentum, epsilon=self.min_gradient)) return model + def optimizer(self): + action = K.placeholder(shape=[None, self.action_size]) + predicted_q_value = K.placeholder(shape=[None, ]) + + loss = a + + optimizer = RMSprop(lr=self.learning_rate, rho=self.momentum, epsilon=self.min_gradient) + updates = optimizer.get_updates(self.model.trainable_weights, [], loss) + train = K.function([self.model.input, action, predicted_q_value], [], updates=updates) + return train + def update_target_model(self): self.target_model.set_weights(self.model.get_weights()) @@ -123,7 +129,7 @@ def pre_processing(next_observe, observe): score, start_live = 0, 5 observe = env.reset() next_observe = observe - for _ in range(random.randint(1, agent.no_op_steps)): + for _ in range(random.randint(1, agent.not_move_steps)): observe = next_observe next_observe, _, _, _ = env.step(1) diff --git a/Code 4. Mountain Car/1. DQN/MountainCar_DQN.py b/Code 4. Mountain Car/1. DQN/MountainCar_DQN.py index e652f794..0715bf6c 100644 --- a/Code 4. Mountain Car/1. DQN/MountainCar_DQN.py +++ b/Code 4. Mountain Car/1. DQN/MountainCar_DQN.py @@ -26,9 +26,10 @@ def __init__(self, state_size, action_size): # these is hyper parameters for the DQN self.discount_factor = 0.99 self.learning_rate = 0.001 + self.epsilon = 1.0 self.epsilon_decay = 0.99999 - self.epsilon_min = 0.01 + self.epsilon_min = 0.1 self.batch_size = 64 self.train_start = 100000 # create replay memory using deque @@ -118,18 +119,20 @@ def save_model(self, name): scores, episodes = [], [] action_fake = 0 + goal_position = 0.5 + global_step = 0 for e in range(EPISODES): done = False score = 0 state = env.reset() - + at_top = False state = np.reshape(state, [1, state_size]) while not done: if agent.render: env.render() - + global_step += 1 # get action for the current state and go one step in environment action = agent.get_action(state) if action == 0: @@ -139,8 +142,10 @@ def save_model(self, name): next_state, reward, done, info = env.step(action_fake) next_state = np.reshape(next_state, [1, state_size]) - if reward > -1: + + if next_state[0][0] >= goal_position: reward = 100 + at_top = True # save the sample to the replay memory agent.replay_memory(state, action, reward, next_state, done) # every time step do the training @@ -150,14 +155,12 @@ def save_model(self, name): if done: # every episode, plot the play time - if score > -200: - score = score - 100 scores.append(score) episodes.append(e) pylab.plot(episodes, scores, 'b') pylab.savefig("./save_graph/MountainCar_DQN1.png") print("episode:", e, " score:", score, " memory length:", len(agent.memory), - " epsilon:", agent.epsilon) + " global_step:", global_step, " epsilon:", agent.epsilon, " at_top:", at_top) # save the model # if e % 50 == 0: diff --git a/Code 4. Mountain Car/1. DQN/save_graph/MountainCar_DQN.png b/Code 4. Mountain Car/1. DQN/save_graph/MountainCar_DQN.png index 0ed4e3ae2958baaf3d584194abb7f3e744df4665..36342e812abbb655e069f9c3fefef62ca4b5b4b3 100644 GIT binary patch literal 11649 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 literal 10875 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 diff --git a/Code 4. Mountain Car/1. DQN/save_graph/MountainCar_DQN1.png b/Code 4. Mountain Car/1. DQN/save_graph/MountainCar_DQN1.png new file mode 100644 index 0000000000000000000000000000000000000000..b91efb9488f04e5834f0f76f191a115973a11413 GIT binary patch literal 13996 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 z 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 Y9Fclx&z7k=-Dkz@zu2+<|Hm%-2Vp4TcmMzZ delta 1007 zcmXxj`&W}?902fOz`zdPhRR@E#|#5PHc&2mpJxOo?*xH>hsz)cJ<3i|M-WN}1P7-> zf*0MuWxx@TTT)ny%bxE`xPE|i5+272<6_E*+bn^ARH`5P>GKzS>ayyxI+a|@IaSvs zZj{Zx(!aW0lDB;S8O~@)!A_gTaX~>Fv9S%pvKt)O8UBR0#YE#MeLl9zozNl=O!yGycPkLDScIo)TPcnp6mDh232qW!f0}~M zA3g#qwG7=Cp2LOnwYY4c2#Z{UKvY?XV{Z(j=G`nPH6%!!*Q)Up%bI+rO@$K^0i>#= z9J7{L-MYN$x;34HDV*SD?r*o}A}}6H~esyy{b;({g{Oh$QwAm7@ZdH=22hu@)V4aj3-=NuimoU={Hj0p~5ueycI*vg?0(=r-X}k@ER$D_* z{%=Gqc}OlCjDfJ6UXoYD(N!9Su&+kY*Ie&LOZnU#3i&gl9)3yU#6~#eWY0__CNRyb zXXy&QhmEqe23S4xw|q}W*U40BeV~)7Q!4w+PxezOsY^Ns>v%#x<-5OKt>{Kc@?msO zTpc!jr9s>vc^yS(=b@i^{F$*&0~qJ6MoP7Ah4w~FBK1W*vU