docs/si/experiments/mnist.html
11importtorch.nnasnn12importtorch.utils.data13fromlabml\_helpers.moduleimportModule1415fromlabmlimporttracker16fromlabml.configsimportoption17fromlabml\_helpers.datasets.mnistimportMNISTConfigsasMNISTDatasetConfigs18fromlabml\_helpers.deviceimportDeviceConfigs19fromlabml\_helpers.metrics.accuracyimportAccuracy20fromlabml\_helpers.train\_validimportTrainValidConfigs,BatchIndex,hook\_model\_outputs21fromlabml\_nn.optimizers.configsimportOptimizerConfigs
24classMNISTConfigs(MNISTDatasetConfigs,TrainValidConfigs):
ප්රශස්තකරණය
32optimizer:torch.optim.Adam
පුහුණුඋපාංගය
34device:torch.device=DeviceConfigs()
වර්ගීකරණආකෘතිය
37model:Module
පුහුණුකිරීමට එපොච් ගණන
39epochs:int=10
එපෝච්තුළ පුහුණුව සහ වලංගු කිරීම අතර මාරු වීමට වාර ගණන
42inner\_iterations=10
නිරවද්යතාශ්රිතය
45accuracy=Accuracy()
පාඩුශ්රිතය
47loss\_func=nn.CrossEntropyLoss()
49definit(self):
ට්රැකර්වින්යාසයන් සකසන්න
54tracker.set\_scalar("loss.\*",True)55tracker.set\_scalar("accuracy.\*",True)
මොඩියුලප්රතිදානයන් ලොග් කිරීමට කොක්කක් එක් කරන්න
57hook\_model\_outputs(self.mode,self.model,'model')
රාජ්යමොඩියුලයක් ලෙස නිරවද්යතාව එක් කරන්න. RNs සඳහා පුහුණුව සහ වලංගු කිරීම අතර රාජ්යයන් ගබඩා කිරීම අදහස් කරන බැවින් නම බොහෝ විට ව්යාකූල වේ. මෙය පුහුණුව සහ වලංගු කිරීම සඳහා නිරවද්යතා මෙට්රික් සංඛ්යාන වෙනම තබා ගනී.
62self.state\_modules=[self.accuracy]
64defstep(self,batch:any,batch\_idx:BatchIndex):
පුහුණුව/ඇගයීම්මාදිලිය
70self.model.train(self.mode.is\_train)
උපාංගයවෙත දත්ත ගෙනයන්න
73data,target=batch[0].to(self.device),batch[1].to(self.device)
පුහුණුප්රකාරයේදී ගෝලීය පියවර (සැකසූ සාම්පල ගණන) යාවත්කාලීන කරන්න
76ifself.mode.is\_train:77tracker.add\_global\_step(len(data))
ආකෘතිප්රතිදානයන් ග්රහණය කර ගත යුතුද යන්න
80withself.mode.update(is\_log\_activations=batch\_idx.is\_last):
ආදර්ශප්රතිදානයන් ලබා ගන්න.
82output=self.model(data)
ගණනයකිරීම සහ ලොග් වීම
85loss=self.loss\_func(output,target)86tracker.add("loss.",loss)
ගණනයකිරීම සහ ලොග් කිරීමේ නිරවද්යතාවය
89self.accuracy(output,target)90self.accuracy.track()
ආකෘතියපුහුණු කරන්න
93ifself.mode.is\_train:
අනුක්රමිකගණනය කරන්න
95loss.backward()
ප්රශස්තිකරණපියවර ගන්න
97self.optimizer.step()
සෑමයුගලයකම අවසාන කණ්ඩායමේ ආදර්ශ පරාමිතීන් සහ අනුක්රමික ලොග් කරන්න
99ifbatch\_idx.is\_last:100tracker.add('model',self.model)
අනුක්රමිකඉවත්
102self.optimizer.zero\_grad()
ලුහුබැඳඇති ප්රමිතික සුරකින්න
105tracker.save()
108@option(MNISTConfigs.optimizer)109def\_optimizer(c:MNISTConfigs):
113opt\_conf=OptimizerConfigs()114opt\_conf.parameters=c.model.parameters()115opt\_conf.optimizer='Adam'116returnopt\_conf