From aedfec4069197ba04da3e485f5774b1277a3b08e Mon Sep 17 00:00:00 2001 From: Hyeokreal Date: Mon, 30 Sep 2019 16:18:25 +0800 Subject: [PATCH] two versions of deep sarsa --- 1-grid-world/6-deep-sarsa/deep_sarsa_agent.py | 10 +- .../6-deep-sarsa/deep_sarsa_agent_v2.py | 156 ++++++++++++++++++ .../6-deep-sarsa/save_graph/deep_sarsa_.png | Bin 0 -> 10982 bytes .../6-deep-sarsa/save_model/deep_sarsa.h5 | Bin 0 -> 21504 bytes img/circle.png | Bin 0 -> 8307 bytes img/down.png | Bin 0 -> 7057 bytes img/left.png | Bin 0 -> 11350 bytes img/rectangle.png | Bin 0 -> 2611 bytes img/right.png | Bin 0 -> 7120 bytes img/triangle.png | Bin 0 -> 6485 bytes img/up.png | Bin 0 -> 6893 bytes save_graph/deep_sarsa_plot.png | Bin 0 -> 10267 bytes save_model/deep_sarsa_pretrained.h5 | Bin 0 -> 25984 bytes 13 files changed, 163 insertions(+), 3 deletions(-) create mode 100755 1-grid-world/6-deep-sarsa/deep_sarsa_agent_v2.py create mode 100644 1-grid-world/6-deep-sarsa/save_graph/deep_sarsa_.png create mode 100644 1-grid-world/6-deep-sarsa/save_model/deep_sarsa.h5 create mode 100644 img/circle.png create mode 100644 img/down.png create mode 100644 img/left.png create mode 100644 img/rectangle.png create mode 100644 img/right.png create mode 100644 img/triangle.png create mode 100644 img/up.png create mode 100644 save_graph/deep_sarsa_plot.png create mode 100644 save_model/deep_sarsa_pretrained.h5 diff --git a/1-grid-world/6-deep-sarsa/deep_sarsa_agent.py b/1-grid-world/6-deep-sarsa/deep_sarsa_agent.py index 1af7fda..3384f5d 100755 --- a/1-grid-world/6-deep-sarsa/deep_sarsa_agent.py +++ b/1-grid-world/6-deep-sarsa/deep_sarsa_agent.py @@ -3,9 +3,13 @@ import random import numpy as np from environment import Env -from keras.layers import Dense -from keras.optimizers import Adam -from keras.models import Sequential +#from keras.layers import Dense +#from keras.optimizers import Adam +#from keras.models import Sequential + +from tensorflow.keras.layers import Dense +from tensorflow.keras.optimizers import Adam +from tensorflow.keras.models import Sequential EPISODES = 1000 diff --git a/1-grid-world/6-deep-sarsa/deep_sarsa_agent_v2.py b/1-grid-world/6-deep-sarsa/deep_sarsa_agent_v2.py new file mode 100755 index 0000000..85b1216 --- /dev/null +++ b/1-grid-world/6-deep-sarsa/deep_sarsa_agent_v2.py @@ -0,0 +1,156 @@ +from __future__ import absolute_import, division, print_function, unicode_literals +import copy +import pylab +import random +import numpy as np +from environment import Env + +import tensorflow as tf +tf.config.experimental_run_functions_eagerly(True) +from tensorflow.keras import backend +import tensorflow.keras.layers as layers +import tensorflow.keras.losses as losses +import tensorflow.keras.models as models +import tensorflow.keras.optimizers as optim + +EPISODES = 1000 + + +class DeepSARSA(tf.keras.Model): + def __init__(self, state_size, action_size, learning_rate, + epsilon, epsilon_min, epsilon_decay, discount_factor): + super(DeepSARSA, self).__init__() + + self.state_size = state_size + self.action_size = action_size + self.learning_rate = learning_rate + self.epsilon = epsilon + self.epsilon_min = epsilon_min + self.epsilon_decay = epsilon_decay + self.discount_factor = discount_factor + + self.model = models.Sequential() + self.model.add(layers.Dense(30, activation='relu')) + self.model.add(layers.Dense(30, activation='relu')) + self.model.add(layers.Dense(self.action_size, activation='linear')) + + self.compile(loss='mse', optimizer=optim.Adam(lr=self.learning_rate)) + self.build(input_shape=(1, self.state_size)) + self.summary() + + def call(self, inputs): + x = tf.convert_to_tensor(inputs) + + q_values = self.model(x) + #x = self.hidden1(x) + #x = self.hidden2(x) + + #q_values = self.linear(x) + + return q_values + + def get_action(self, state): + if np.random.rand() <= self.epsilon: + return random.randrange(self.action_size) + else: + state = np.float32(state) + q_values = self.call(state) + return np.argmax(q_values[0]) + + def update(self, state, action, reward, next_state, next_action, done): + + if self.epsilon > self.epsilon_min: + self.epsilon *= self.epsilon_decay + + state = np.float32(state) + next_state = np.float32(next_state) + + target = self.predict(state)[0] + # 살사의 큐함수 업데이트 식 + if done: + target[action] = reward + else: + next_q = self.predict(next_state)[0] + # tf.assign(target[action], [(reward + self.discount_factor * next_q[next_action])]) + target[action] = (reward + self.discount_factor * next_q[next_action]) + + # 출력 값 reshape + target = np.reshape(target, [1, 5]) + # 인공신경망 업데이트 + self.fit(state, target, epochs=1, verbose=0) + + +# 그리드월드 예제에서의 딥살사 에이전트 +class Trainer: + def __init__(self, env, load_model=None): + self.env = env + # 에이전트가 가능한 모든 행동 정의 + self.action_space = [0, 1, 2, 3, 4] + # 상태의 크기와 행동의 크기 정의 + self.action_size = len(self.action_space) + self.state_size = 15 + self.discount_factor = 0.99 + self.learning_rate = 0.001 + + self.epsilon = 1. # exploration + self.epsilon_decay = .9999 + self.epsilon_min = 0.01 + self.agent = DeepSARSA(state_size=self.state_size, + action_size=self.action_size, + learning_rate=self.learning_rate, + epsilon=self.epsilon, + epsilon_min=0.01, + epsilon_decay=.9999, + discount_factor=0.99) + + self.global_step = 0 + self.scores, self.episodes = [], [] + + if load_model is not None: + self.epsilon = 0.05 + self.agent = models.load_model('./save_model/deep_sarsa_pretrained.h5') + + def train(self): + + for e in range(EPISODES): + done = False + score = 0 + state = self.env.reset() + state = np.reshape(state, [1, 15]) + + while not done: + + self.global_step += 1 + + action = self.agent.get_action(state) + + next_state, reward, done = env.step(action) + next_state = np.reshape(next_state, [1, 15]) + next_action = self.agent.get_action(next_state) + + self.agent.update(state, action, reward, + next_state, next_action, done) + + state = next_state + score += reward + + state = copy.deepcopy(next_state) + + if done: + self.scores.append(score) + self.episodes.append(e) + pylab.plot(self.episodes, self.scores, 'b') + pylab.savefig("./save_graph/deep_sarsa_plot.png") + + print("Episodes : {:04d}, Score: {:.2f}, Global_step : {:03d}, Epsilon : {:.4f}" + .format(e, score, self.global_step, self.agent.epsilon)) + + if e % 100 == 0: + self.agent.model.save('./save_model/deep_sarsa_pretrained.h5') + + +if __name__ == "__main__": + # 환경과 에이전트 생성 + env = Env() + trainer = Trainer(env) + trainer.train() diff --git a/1-grid-world/6-deep-sarsa/save_graph/deep_sarsa_.png b/1-grid-world/6-deep-sarsa/save_graph/deep_sarsa_.png new file mode 100644 index 0000000000000000000000000000000000000000..978ff121aeb9517cb7b01bb102b2c58844833c9a GIT binary patch literal 10982 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 literal 0 HcmV?d00001 diff --git a/1-grid-world/6-deep-sarsa/save_model/deep_sarsa.h5 b/1-grid-world/6-deep-sarsa/save_model/deep_sarsa.h5 new file mode 100644 index 0000000000000000000000000000000000000000..30ca91a07f53b89a1bc8d45c294270410463c69c GIT binary patch literal 21504 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 Of%32O$^X0iUH=0n$z!7c literal 0 HcmV?d00001 diff --git a/img/circle.png b/img/circle.png new file mode 100644 index 0000000000000000000000000000000000000000..7aeacd38829329142fd902a5561b4541c4526d5c GIT binary patch literal 8307 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 uaL?XU72NOS55=iIc}}6iIST#wi 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 literal 0 HcmV?d00001 diff --git a/img/rectangle.png b/img/rectangle.png new file mode 100644 index 0000000000000000000000000000000000000000..b7cea07389d230209dd45359acbb75408176fa82 GIT binary patch literal 2611 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 XD~jz#xPt&CouDv60!SKUrqaceaM-Vzq+vhcbP zd%IAZU6lQi^@Y6JH&MgGN5o__37QE1r9yK>1i{QPVtcS|#cfIPQ; zVoGb^F#f;MsEBKU(H&~4*OewYmsrfzSuU6%njqs zD3|7w{~Z{gMADQ@j)~9ZW6HBJ6O_DKWDHlj!gl8sepKgunA1St@P1AiMOTmq=`VDx zX0nitlmuIPY4s@>c6Wy?q&;hYX5-p4)-tXLESH1sz`6WF^D`wHffhMUa zI`zw}#i%$XM|YR`x2JbR-RZHxv`jLGHdFG@NJhmAjzye9>EO}grkwn;R|%-dsTieI zso&D1FUnIL7VmzP6hHd#>|JmRMbUm`MIAxC_XeM_+!jFdw#Z(YnwVA0_!Jh3+ueB^ zs=pBtkfXXV6F$8flO}z1x8TX+Xr7j6QdFMq#f_=o`&C1R&=GzQfeC{snUsHy<7NL` z^?ot^#poEHa<7mP@7xa2Jof-sb3cGkVaHTr_8{@fPwD#Exoxu#U3}p=;jv03#Hc3r z8WzTLPvznpSxsz@aJZhsFpcv5a4U*F&Lq!W#?7DLly{Tw)D%@?MXfgd^Sh?^kN4Z# zouap2chyR`#%ukLw_0HLVJYvo8_OlJ4%fM~Bc+t#+GqKZoCDEc9OVr*$o}#$bZCNx z$;PA8)m*NNJ3kD)E;(u__wT)ZpkV$Y^U|VETQy|L-qcG{lXmEVxu^~fKK8n;=d1hmo9Pel zQg`}?dmjW>{g=mWPUuFaeN3OKSi7oW=PPquxAY0)j>on&|K&tn>00z!e63WYSj4%# z*2d2f9TA@+x+30Pg_G4kW&LUTCF3U)=+wI5u_|Cc8pa!Xl5%S%&9l@HCG5p>hBx57 z(l0X?`4zEa%-6AIKZt2%b2Q!@*=$Y0y?7$N=0$L>H=MRB*jMCJZ9dy` zeIx>I_f5@bj{P&w9iyH{*90n*B+@cwr%8n;>~k^tM06xHz(ww3aE~aDodj zqxXzMwQi=pVfo!1j+j0Y-7Ef^Bc`O@*$CX zy)#2Cfu&Q@gjdSySnu(@*gI%8D*JwoLUh|C~B_xd^3jX7TL;6L5Cw7oQg(83y8aW{a-zY zf+dwXiFLrqvX|W;gv!SR$gX&pmu8f^>C4vG_Wcr^jEK?C_bDuBpcWp9?9~{4XN(z3 zBtW4@#=YU-z#n`Nnx-@&epYUW65YMZ-S6NXC3H|uzN7Mh?C&ILJGtck;E zaIEWSt2($1xulCBy@jm=I}+U}2X5=*3#A>xEX-v6VN*7c(G>92mEGd+d14`Dzc5J9 zVx60K3x-;d*y)Nq8ymFL{nfz|-g)q2H6oxV{%Ixpi(_S4(_~9#DCX%Rt z$B;Vz61G_&WU?)Q+9$iGnboyn_*ThgNnJC?79h}k3@6;~#CU1YlOGp&yKxxO1(yrV z;QD?Lt>;E#Z*k4&WX*Rc4+Xo<|DPQS1(;NPcxq7o5H6uf6p8a$-j<`=@&emU?e*D` z;gOOuvGqywT^GQtrybE`MDdx|R^NHt7Yhr@2$1`n`vrik6fjNmxRdz7y1C58$tm%w z8&3`#J8tnlhYpjUJ%;q`>?$!GUNY2UV>i{===xU)WI6F4GbZNJ;L7s45g5LmTM*>- zsHF~IqB9Q+Rc-k4QAJ=Me!F6zkKA-!d046*P)zkmYO%P$-oLJGce;nVD z%+462uVbvk0ZbKvseRj{vhUKnSN>HI8GOx_Dv9Iu2(BwoQ)v!<&}MTY>OLr_#HBD;Nt2Q??F7k>AJg7juLrqcm;#E|lRT^bo*dpG|T&-t!3A}EQ(wcgEK zNF*FtVgK4T`0Sx-XmK+rLtif@fWl)Q2z>*e>FeV2ed=!O+_NVyY0S)It#V!9HI);b zdrzs&DIdT7>WqKG;ZmA}C;?*;Ajk8`@*S@Y3j+7(ba$9Y;ho)XvTquF; ziU#}XRo@D7d%o~jHserSj)`v5`>6blyMZj^^}9YF0OW3<{xi%3+>EHwAx1ZLJ$K|r z!c+NU>C$o;IRAeIXIqcDpxl4?Ym)6=p?M-y)br7K&d-_Avt3VhhqFdDy@V5;-taOQ z7#IVtK00OUf0r`+<7!{dkG+r9S7H z&dBYCm{7epGVqVD%s4&1JYK3p8lTTB28@9KWHD|!Bj}-Ps~dl-0wThDmsa_Kx$dVL zC&XzDCzYOqOWNNkejV_bcJAOubQO;yKtd*<@01XRY2`nO1&@w6?CO26ANx^rUCO zyFrEWtuDJ;@7vN$_Ks_zo>NsiU3Z9HgI+6xbm%^1*cP(PuU%#==*Mv}w52+n%->z-Wb>y4iQQ;Ft) zT9)dI(ya?C*`ppgbxziETN`&{+w1Pz0Q@my1OlW=sC_T&lPY<;eotT_bK}K;E;o8W ztv}E4=*6SGv2nFgydE2^=CSQe2~R-AF=J1G$)x3mIHkS1Oz@2y&F$Qs!jCcfg~8|I z03!9ENXsJ?%la3p#HUuG2d;Sf0Qhf?Ms2;9{khfksjfop$kEe|B!pK&3Y|cgFeKL* z%YW5|c~4yvm^Gm8-$je>{SOi!cDzrQcqgD;-<5}^eeV6TH?Kz0N?q~Fe4;odySMuE zI@AMo$Weg)@>-DB-8JRL4_^a;pc-RT0GHgSwuro%+r`#d8&}IBeadu6UPU2^zyfg` zbQvAvdZB<*ox{!ZeS=X0>RWFjQ7b>&8V(r?DEXFJw3LQ-j+L2oijH{N93LhLp~K`E z9XCHne{I1URSK~wuDXb0$6@~_(M|j=1G!!`T&=}BWmrpF6-L-q3}f>huauF%eg6Uv zK77gl)i<+Xsd7S#;-7w+lT8-Gi9e4F9`9=IOiM}TU5$}W^_HBK}vf;Q;xkm zA8b>Y&L;ICvaH(`W&Tf+^+k|QaX@d@Fq*;e?9WVrs%ApO;OOhkW7vF33I zZsmgx#IrJQ5j5pHtFiij_xF|9*(nQDL5JzRHR(nV{+ z0(|36hV`C|C24&2i3h!&4M9D7w9&2&^^BYfMFan`U&doau2fjkWzG*!-@#~uEkJ#c zvV2(+M$^>06084Et0)EFgaVb+UZ=q~VZ8zR{SJI1V)qOic}sI;w9W9Vu;>OCB(mp) ze;|dkKPM0k_TL9;JeGKejco)u!OpRydGdX@J0~jO-skv3l0E@C_V&b36I@x({a?m# zp}0pv8K$Ju*8~odWjjLx6(5Ua zT&o?;=I&AZ%mf0GzvgI6`^j51pu}_Y2@rp;HRbumuP;zb$g!|ZLidaws)wb&5=3l! z5kopQT|M}f!PNr#!LhVANOWJThTIYL$`9Dziv0J)X;2j*hAo=KpYhV8y%$mz>YWNMHNtpc_`*iPDo^PJhoj^I|sN; z?Ew?TP1^7^ANY<6kpbS+_B|7cD<9kz0U1aGC8}IU82rSpAtVYJQ#ZHmbz<5Tl@G4( zTv8SihU_rO&lVp-s=kw4bcI*~1C)#xBPEs1O$&>>M_Amf*JU9GI%b1=7>Gx~j7#tz z*P}cZHq1sPe1hq2Ket20Wm~n%h&o~923hiA|AihF`A2@B|NpClnWq{|*Z$ZP5^^0tr z;9X&AA4Kp%e#hsP?MU;3%*lL8Bk0Nu0&?K*YiJ;NS%SX(G}x}L?;{9i{pguq|* z+t~4e7D;+oex?|b7pC6ZD>vjG1924I6<=}cA}M@*NtrGnDj?`4m--vwN0x2ih-}0& zu7eb2a+EZ1`vh;K2xjaR0lEE080WaiwRjjP8wiy6$9nnNlaTuiL=)IlYmyMwHPADJ zPHe8d*A1=MRgj+zJIBoZKZMAULqYQW_)(Q?F!p;+cuG^3*#Y)43-WrnNM)B<( zl=wE2v0HG&U$)Y_*;0b&O-dpM@Vv5)T8*lnEpu5|@L5Ofu$G3DOPxYTP*S=+e zZ3l31*iO8)lfXT^Frsh>k%MzOWH({$_jWy71d~glvQBkzqN=gNVNv`Kt`Mk-#M!AY zK)1@)wJy=UUPN@n>#yUf4NPG<48(1C>X*C~lzbGekiHniXc(_Qu~yL_TJ`{ALM)y# zn}LezdCC&Nnm?i=PQR}=sV2x0OQ6~j6Q;~RLPb9cYcl&*5zH;zg~3{>$H-6ddRD-# zLNQYrTya5oqx7vy2xd#QmmRUB1@L5rfzmaM)i1a$L}Bd25va$A5>r;`V3R#y(wpRJvY<#wx8g$j;gEmo)06;) zEr%F>wL#t>xf;(kd0zknn-!uu%U4_{zvE`raX>RyK7Bs)fVmot$xIu#&nTZ2ScDbf zn&0xir3*($u(+x&nuCbguSwJ6Mkb%dRp$r9nz*n7P@s0dzXdGhlhRg!KxpzYJggwSDyj-Y?ilar?-60paqG|3n^+^bg=JIwBskH@&JeSfD}_wCr%~6k5^VhyI2tl!oMS=oj7#-p)ZF01i^H zRva7I4P&R2rp5x<>LGhn`2oKMn5^kta~Gb66)}G^>08DFI=mgSBa~kPC!sv_6S!n* zhBPMO4EhpG>du1Ukrk(+tP`V;AZ6e?i@`lIaN;El3;2frZV2ldTF8KIuVCg2gpb;8?%w^itO^- z`{{v86ZxlRA4BO?U#0y(FE2Rvsw07}AP&yGq3TjNUFm6+Dlz&9gLiJJ2S0dFI%esZzn~^V z{Ny;#x-azi!jgUN=C-;B&QZ4ea9B&W$_*o}U4B=(G)q_PbHwZ^zfFig*7Xbs2|6kJ zRS|dh#b}6x0{v-IfvH%1jVG;1sQ9v3{l`$vt_dHM{F9D(up23d%{3ye={InkoCLCq z2_p7S1wMg_Mi6s{ZAu&dStmcJ!~O8ZSj*!UdRdvBoEG~^R6*cB^3EzO+DY{yxfVaP+Jdf#*8IVhgWIAq#wJqHl@0y^{L_HV~*M zi3(G@GZ23bg5LiL7$%|xD&TCEyp&@i9hypMzqPm8Jm^7-&{S|f!kS0rG+NKX-AaEB z1dCB53Qz6lL8|hmiW+nDKlF$~+9O#9@mK`CSJK5g

_*+|ARJP8R}3kZ7a2q=cK5 zvt^;L*Ybw&qbqt|2BBIHk$w#i3tf`O{g%-@j}1E2>9jQ{`u literal 0 HcmV?d00001 diff --git a/img/up.png b/img/up.png new file mode 100644 index 0000000000000000000000000000000000000000..6e9c2176c31336c768f5aedd0745666dfd749b47 GIT binary patch literal 6893 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 literal 0 HcmV?d00001 diff --git a/save_graph/deep_sarsa_plot.png b/save_graph/deep_sarsa_plot.png new file mode 100644 index 0000000000000000000000000000000000000000..7dc00ea9262560c6e58f43b8241f11602256a653 GIT binary patch literal 10267 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 MOIMS0=GHI&1HSp2rT_o{ literal 0 HcmV?d00001 diff --git a/save_model/deep_sarsa_pretrained.h5 b/save_model/deep_sarsa_pretrained.h5 new file mode 100644 index 0000000000000000000000000000000000000000..4a0e5124cebe3201bf99855a65e1121c3da2f3b0 GIT binary patch literal 25984 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