Back to Annotated Deep Learning Paper Implementations

බහු-සැකසුම්සමග Atari දවටනය

docs/si/rl/game.html

latest6.9 KB
Original Source

homerl

View code on Github

#

බහු-සැකසුම්සමග Atari දවටනය

9importmultiprocessing10importmultiprocessing.connection1112importcv213importgym14importnumpyasnp

#

ක්රීඩාපරිසරය

මෙයOpenAI ජිම් ක්රීඩා පරිසරය සඳහා ඔතා. අපි මෙහි කරුණු කිහිපයක් කරන්නෙමු:

  1. රාමු හතරක් මත එකම ක්රියාව යොදන්න සහ අවසාන රාමුව 2 ලබා ගන්න. නිරීක්ෂණ රාමු අළු පැහැයට පරිවර්තනය කර පරිමාණය කරන්න (84, 84) 3. අවසාන ක්රියා හතරේ රාමු හතරක් ගොඩගසන්න 4. 5 අධීක්ෂණය සඳහා කථාංග තොරතුරු එක් කරන්න (සමස්ත කථාංගය සඳහා සම්පූර්ණ විපාකය). කථාංගයක් තනි ජීවිතයකට සීමා කරන්න (ක්රීඩාවට ජීවිත 5 ක් ඇත, සෑම ජීවිතයකටම පසු අපි නැවත සකස් කරමු)

නිරීක්ෂණආකෘතිය

නිරීක්ෂණයයනු ප්රමාණයේ ආතන්ය (4, 84, 84). එය රාමු හතරක් (ක්රීඩා තිරයේ රූප) පළමු අක්ෂය මත එකමත. එනම්, එක් එක් නාලිකාව රාමුවක් වේ.

17classGame:

#

38def\_\_init\_\_(self,seed:int):

#

පරිසරයනිර්මාණය කරන්න

40self.env=gym.make('BreakoutNoFrameskip-v4')41self.env.seed(seed)

#

රාමු4 ක් සඳහා ටෙන්සර්

44self.obs\_4=np.zeros((4,84,84))

#

අවසානරාමු 2 හි උපරිමය තබා ගැනීමට බෆරය

47self.obs\_2\_max=np.zeros((2,84,84))

#

කථාංගවිපාක පිළිබඳ වාර්තාවක් තබා ගන්න

50self.rewards=[]

#

සහජීවිත ගණන

52self.lives=0

#

පියවර

action සඳහා ක්රියාත්මක 4 කාලය පියවර සහ ක tuple ආපසු (නිරීක්ෂණ, විපාකය, සිදු, episode_info).

  • observation : රාමු 4 ක් (අවසාන ක්රියා 3 සඳහා මෙම රාමුව සහ රාමු)
  • reward : ක්රියාව ක්රියාත්මක කරන ලද අතර සම්පූර්ණ විපාකය
  • done : කථාංගය අවසන් වේවා (ජීවිතයක් අහිමි විය)
  • episode_info : සම්පූර්ණ නම් කථාංග තොරතුරු
54defstep(self,action):

#

66reward=0.67done=None

#

පියවර4 ක් සඳහා ධාවනය කරන්න

70foriinrange(4):

#

OpenAIජිම්නේසියම පරිසරය තුළ ක්රියාව ක්රියාත්මක

72obs,r,done,info=self.env.step(action)7374ifi\>=2:75self.obs\_2\_max[i%2]=self.\_process\_obs(obs)7677reward+=r

#

ජීවිතගණන ඉතිරි කර ගන්න

80lives=self.env.unwrapped.ale.lives()

#

ජීවිතයක්නැති වුවහොත් නැවත සකසන්න

82iflives\<self.lives:83done=True84break

#

එක්එක් පියවර සඳහා ත්යාග පවත්වා ගන්න

87self.rewards.append(reward)8889ifdone:

#

අවසන්නම්, කථාංගය අවසන් නම් කථාංග තොරතුරු සකසන්න, සහ නැවත සකසන්න

91episode\_info={"reward":sum(self.rewards),"length":len(self.rewards)}92self.reset()93else:94episode\_info=None

#

අවසානරාමු දෙකේ උපරිම ලබා ගන්න

97obs=self.obs\_2\_max.max(axis=0)

#

රාමු4 ක තොගයට එය තල්ලු කරන්න

100self.obs\_4=np.roll(self.obs\_4,shift=-1,axis=0)101self.obs\_4[-1]=obs102103returnself.obs\_4,reward,done,episode\_info

#

පරිසරයයළි පිහිටුවන්න

කථාංගතොරතුරු සහ රාමු 4 ක් පිරිසිදු කරන්න

105defreset(self):

#

OpenAIGym පරිසරය

112obs=self.env.reset()

#

හැඹිලිනැවත සකසන්න

115obs=self.\_process\_obs(obs)116foriinrange(4):117self.obs\_4[i]=obs118self.rewards=[]119120self.lives=self.env.unwrapped.ale.lives()121122returnself.obs\_4

#

ක්රියාවලියක්රීඩාව රාමු

ක්රීඩාරාමු අළු බවට පරිවර්තනය කර 84x84 බවට නැවත සකස් කරන්න

124@staticmethod125def\_process\_obs(obs):

#

130obs=cv2.cvtColor(obs,cv2.COLOR\_RGB2GRAY)131obs=cv2.resize(obs,(84,84),interpolation=cv2.INTER\_AREA)132returnobs

#

සේවකක්රියාවලිය

සෑමසේවක ක්රියාවලියක්ම මෙම ක්රමය ක්රියාත්මක කරයි

135defworker\_process(remote:multiprocessing.connection.Connection,seed:int):

#

ක්රීඩාවසාදන්න

143game=Game(seed)

#

සම්බන්ධතාවයෙන්උපදෙස් බලා ඒවා ක්රියාත්මක කරන්න

146whileTrue:147cmd,data=remote.recv()148ifcmd=="step":149remote.send(game.step(data))150elifcmd=="reset":151remote.send(game.reset())152elifcmd=="close":153remote.close()154break155else:156raiseNotImplementedError

#

නවසේවකයෙකු නිර්මාණය කර එය වෙනම ක්රියාවලියක් තුළ ක්රියාත්මක කරයි.

159classWorker:

#

164def\_\_init\_\_(self,seed):165self.child,parent=multiprocessing.Pipe()166self.process=multiprocessing.Process(target=worker\_process,args=(parent,seed))167self.process.start()

Trending Research Paperslabml.ai