docs/si/gan/dcgan/index.html
[View code on Github](https://github.com/labmlai/annotated_deep_learning_paper_implementations/tree/master/labml_nn/gan/dcgan/ init.py)
මෙය PyTorch ගැඹුරු සංකෝචන උත්පාදක අහිතකර ජාලයන් සමඟ කඩදාසි අධීක්ෂණය නොකළ නියෝජන ඉගෙනුම් ක්රියාත්මක කිරීමයි.
මෙමක්රියාත්මක කිරීම PyTorch DCGAN නිබන්ධනයමත පදනම් වේ.
15importtorch.nnasnn1617fromlabmlimportexperiment18fromlabml.configsimportcalculate19fromlabml\_helpers.moduleimportModule20fromlabml\_nn.gan.original.experimentimportConfigs
මෙයසෙලෙබා මුහුණු සඳහා භාවිතා කරන ද-සංවහන ජාලයට සමාන වන නමුත් MNIST රූප සඳහා වෙනස් කර ඇත.
23classGenerator(Module):
33def\_\_init\_\_(self):34super().\_\_init\_\_()
ආදානයනාලිකා 100 ක් 1×1 සමඟ ඇත
36self.layers=nn.Sequential(
මෙය 3×3 ප්රතිදානය ලබා දෙයි
38nn.ConvTranspose2d(100,1024,3,1,0,bias=False),39nn.BatchNorm2d(1024),40nn.ReLU(True),
මෙයලබා දෙයි 7×7
42nn.ConvTranspose2d(1024,512,3,2,0,bias=False),43nn.BatchNorm2d(512),44nn.ReLU(True),
මෙයලබා දෙයි 14×14
46nn.ConvTranspose2d(512,256,4,2,1,bias=False),47nn.BatchNorm2d(256),48nn.ReLU(True),
මෙයලබා දෙයි 28×28
50nn.ConvTranspose2d(256,1,4,2,1,bias=False),51nn.Tanh()52)5354self.apply(\_weights\_init)
56defforward(self,x):
හැඩයෙන්වෙනස් [batch_size, 100] කරන්න [batch_size, 100, 1, 1]
58x=x.unsqueeze(-1).unsqueeze(-1)59x=self.layers(x)60returnx
63classDiscriminator(Module):
68def\_\_init\_\_(self):69super().\_\_init\_\_()
ආදානයඑක් නාලිකාවක් 28×28 සමඟ ඇත
71self.layers=nn.Sequential(
මෙයලබා දෙයි 14×14
73nn.Conv2d(1,256,4,2,1,bias=False),74nn.LeakyReLU(0.2,inplace=True),
මෙයලබා දෙයි 7×7
76nn.Conv2d(256,512,4,2,1,bias=False),77nn.BatchNorm2d(512),78nn.LeakyReLU(0.2,inplace=True),
මෙයලබා දෙයි 3×3
80nn.Conv2d(512,1024,3,2,0,bias=False),81nn.BatchNorm2d(1024),82nn.LeakyReLU(0.2,inplace=True),
මෙයලබා දෙයි 1×1
84nn.Conv2d(1024,1,3,1,0,bias=False),85)86self.apply(\_weights\_init)
88defforward(self,x):89x=self.layers(x)90returnx.view(x.shape[0],-1)
93def\_weights\_init(m):94classname=m.\_\_class\_\_.\_\_name\_\_95ifclassname.find('Conv')!=-1:96nn.init.normal\_(m.weight.data,0.0,0.02)97elifclassname.find('BatchNorm')!=-1:98nn.init.normal\_(m.weight.data,1.0,0.02)99nn.init.constant\_(m.bias.data,0)
අපි සරල ගැන් අත්හදා බැලීම් ආනයනය කර උත්පාදක යන්ත්රය සහ වෙනස්කම් කරන ජාල වෙනස් කරමු
104calculate(Configs.generator,'cnn',lambdac:Generator().to(c.device))105calculate(Configs.discriminator,'cnn',lambdac:Discriminator().to(c.device))
108defmain():109conf=Configs()110experiment.create(name='mnist\_dcgan')111experiment.configs(conf,112{'discriminator':'cnn',113'generator':'cnn',114'label\_smoothing':0.01})115withexperiment.start():116conf.run()117118119if\_\_name\_\_=='\_\_main\_\_':120main()