docs/si/adaptive_computation/ponder_net/experiment.html
homeadaptive_computationponder_net
මෙය සමානාත්මතා කාර්ය පිළිබඳ පොන්ඩර්නෙට් එකක් පුහුණු කරයි.
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()