就想弄个生成数字,不知道为什么就一直训练不出来(急急急
生成的图(2个epoch)(多次尝试的其中一个,其他的更离谱,这个至少模式坍塌的不那么彻底)
loss图(也是2epoch
loss: D
loss: G
我寻思这loss差不多都ln2简直完美(用的BCELoss
而且训练时间(5min+/epoch)(cpu)也比全连接GAN长(悲
生成器
def __init__(self):
super(G, self).__init__()
self.linear = nn.Sequential(
nn.Linear(110, 3 * 11 * 11),
nn.LeakyReLU()
)
self.conv = nn.Sequential(
nn.ConvTranspose2d(3, 64, 4),
nn.BatchNorm2d(64),
nn.LeakyReLU(),
nn.ConvTranspose2d(64, 1, 2, 2),
nn.Tanh()
)
def forward(self, inputs, label_tensors):
return self.conv(self.linear(torch.cat((inputs, label_tensors), 1)).view(-1, 3, 11, 11))
判别器
def __init__(self):
super(D, self).__init__()
self.conv = nn.Sequential(
nn.Conv2d(1, 10, 3),
nn.LeakyReLU(),
nn.MaxPool2d(2),
nn.Conv2d(10, 20, 4),
nn.LeakyReLU(),
nn.MaxPool2d(2),
)
self.linear = nn.Sequential(
nn.Linear(500 + 10, 100),
nn.LeakyReLU(),
nn.BatchNorm1d(100),
nn.Linear(100, 1),
nn.Sigmoid()
)
def forward(self, inputs, label_tensors):
inputs = torch.cat((self.conv(inputs).view(-1, 500), label_tensors), 1)
return self.linear(inputs)
优化器(一样)
self.optimiser = torch.optim.Adam(self.parameters(), lr=0.0001)
真蚌埠住了,看网上的都是1000多个通道的卷积层,电脑是在8是很行,就是说想找那种判别器生成器参数都不是很多(最好别超50w)
还有就是想知道为什么明明loss完美但是生成的图却这么......一言难尽
谢谢