Back to Annotated Deep Learning Paper Implementations

පොන්ඩර්නෙට් සමානාත්මතා කාර්ය අත්හදා බැලීම

docs/si/adaptive_computation/ponder_net/experiment.html

latest7.3 KB
Original Source

homeadaptive_computationponder_net

View code on Github

#

පොන්ඩර්නෙට් සමානාත්මතා කාර්ය අත්හදා බැලීම

මෙය සමානාත්මතා කාර්ය පිළිබඳ පොන්ඩර්නෙට් එකක් පුහුණු කරයි.

13fromtypingimportAny1415importtorch16fromtorchimportnn17fromtorch.utils.dataimportDataLoader1819fromlabmlimporttracker,experiment20fromlabml\_helpers.metrics.accuracyimportAccuracyDirect21fromlabml\_helpers.train\_validimportSimpleTrainValidConfigs,BatchIndex22fromlabml\_nn.adaptive\_computation.parityimportParityDataset23fromlabml\_nn.adaptive\_computation.ponder\_netimportParityPonderGRU,ReconstructionLoss,RegularizationLoss

#

සරල පුහුණු ලූපයක්සහිත වින්යාස කිරීම්

26classConfigs(SimpleTrainValidConfigs):

#

එපොච්ගණන

33epochs:int=100

#

එක්ඊපෝච්චයකට කණ්ඩායම් ගණන

35n\_batches:int=500

#

කණ්ඩායම්ප්රමාණය

37batch\_size:int=128

#

ආකෘතිය

40model:ParityPonderGRU

#

LRec​

43loss\_rec:ReconstructionLoss

#

LReg​

45loss\_reg:RegularizationLoss

#

ආදානදෛශිකයේ මූලද්රව්ය ගණන. නිරූපණයසඳහා අපි එය අඩු මට්ටමක තබා ගනිමු; එසේ නොමැතිනම් පුහුණුව සඳහා බොහෝ කාලයක් ගත වේ. සමානාත්මතා කාර්යය සරල යැයි පෙනුනද, සාම්පල දෙස බැලීමෙන් රටාව අවබොධ කිරීම තරමක් අපහසුය.

51n\_elems:int=8

#

සැඟවුණුස්ථරයේ ඒකක ගණන (රාජ්ය)

53n\_hidden:int=64

#

උපරිමපියවර ගණන N

55max\_steps:int=20

#

λp​ ජ්යාමිතික ව්යාප්තිය සඳහා pG​(λp​)

58lambda\_p:float=0.2

#

පාඩු LReg​ සංගුණකය විධිමත් කිරීම β

60beta:float=0.01

#

සම්මතයඅනුව ශ්රේණිය ක්ලිපින් කිරීම

63grad\_norm\_clip:float=1.0

#

පුහුණුවසහ වලංගු කිරීමේ කාරකයන්

66train\_loader:DataLoader67valid\_loader:DataLoader

#

නිරවද්යතාවයකැල්ක්යුලේටරය

70accuracy=AccuracyDirect()

#

72definit(self):

#

තිරයවෙත දර්ශක මුද්රණය කරන්න

74tracker.set\_scalar('loss.\*',True)75tracker.set\_scalar('loss\_reg.\*',True)76tracker.set\_scalar('accuracy.\*',True)77tracker.set\_scalar('steps.\*',True)

#

පුහුණුවසහ වලංගු කිරීම සඳහා එපෝච් සඳහා ඒවා ගණනය කිරීම සඳහා ප්රමිතික සකස් කළ යුතුය

80self.state\_modules=[self.accuracy]

#

ආකෘතියආරම්භ කරන්න

83self.model=ParityPonderGRU(self.n\_elems,self.n\_hidden,self.max\_steps).to(self.device)

#

LRec​

85self.loss\_rec=ReconstructionLoss(nn.BCEWithLogitsLoss(reduction='none')).to(self.device)

#

LReg​

87self.loss\_reg=RegularizationLoss(self.lambda\_p,self.max\_steps).to(self.device)

#

පුහුණුවසහ වලංගු කිරීමේ කාරකයන්

90self.train\_loader=DataLoader(ParityDataset(self.batch\_size\*self.n\_batches,self.n\_elems),91batch\_size=self.batch\_size)92self.valid\_loader=DataLoader(ParityDataset(self.batch\_size\*32,self.n\_elems),93batch\_size=self.batch\_size)

#

මෙමක්රමය එක් එක් කණ්ඩායම සඳහා පුහුණුකරු විසින් කැඳවනු ලැබේ

95defstep(self,batch:Any,batch\_idx:BatchIndex):

#

ආදර්ශප්රකාරය සකසන්න

100self.model.train(self.mode.is\_train)

#

ආදානසහ ලේබල ලබාගෙන ඒවා ආකෘතියේ උපාංගයට ගෙන යන්න

103data,target=batch[0].to(self.device),batch[1].to(self.device)

#

පුහුණුමාදිලියේ වර්ධක පියවර

106ifself.mode.is\_train:107tracker.add\_global\_step(len(data))

#

ආකෘතියධාවනය කරන්න

110p,y\_hat,p\_sampled,y\_hat\_sampled=self.model(data)

#

ප්රතිසංස්කරණඅලාභය ගණනය කරන්න

113loss\_rec=self.loss\_rec(p,y\_hat,target.to(torch.float))114tracker.add("loss.",loss\_rec)

#

නියාමනයකිරීමේ අලාභය ගණනය කරන්න

117loss\_reg=self.loss\_reg(p)118tracker.add("loss\_reg.",loss\_reg)

#

L=LRec​+βLReg​

121loss=loss\_rec+self.beta\*loss\_reg

#

ගෙනඇති පියවර ගණන ගණනය කරන්න

124steps=torch.arange(1,p.shape[0]+1,device=p.device)125expected\_steps=(p\*steps[:,None]).sum(dim=0)126tracker.add("steps.",expected\_steps)

#

ඇමතුම්නිරවද්යතාව මෙට්රික්

129self.accuracy(y\_hat\_sampled\>0,target)130131ifself.mode.is\_train:

#

අනුක්රමිකගණනය

133loss.backward()

#

ක්ලිප්අනුක්රමික

135torch.nn.utils.clip\_grad\_norm\_(self.model.parameters(),max\_norm=self.grad\_norm\_clip)

#

ප්රශස්තකරණය

137self.optimizer.step()

#

අනුක්රමිකපැහැදිලි කරන්න

139self.optimizer.zero\_grad()

#

141tracker.save()

#

අත්හදාබැලීම ක්රියාත්මක කරන්න

144defmain():

#

148experiment.create(name='ponder\_net')149150conf=Configs()151experiment.configs(conf,{152'optimizer.optimizer':'Adam',153'optimizer.learning\_rate':0.0003,154})155156withexperiment.start():157conf.run()

#

160if\_\_name\_\_=='\_\_main\_\_':161main()

Trending Research Paperslabml.ai