# For generator, goal is to make the discriminator believe everything is 1
noise = (torch.rand(real_inputs.shape[0], 128)-0.5)/0.5
noise = noise.to(device)
fake_inputs = G(noise)
fake_outputs = D(fake_inputs)
fake_targets = torch.ones([fake_inputs.shape[0], 1]).to(device)
G_loss = loss(fake_outputs, fake_targets)
G_optimizer.zero_grad()
G_loss.backward()
G_optimizer.step()
if idx % 100 == 0 or idx == len(train_loader):
print('Epoch {} Iteration {}: discriminator_loss {:.3f} generator_loss {:.3f}'.format(epoch, idx, D_loss.item(), G_loss.item()))
if (epoch+1) % 10 == 0:
torch.save(G, 'Generator_epoch_{}.pth'.format(epoch))
print('Model saved.')
结果经过100个训练时期之后,我们就可以对数据集停止可视化处置,直接看到模型从随机噪音生成的数字:
我们可以看到,生成的结果和真实的数据十分相像。思索到我们在这里只是搭建了一个十分复杂的模型,实践的运用效果会有十分大的上升空间。
不只是有样学样GAN和以往机器视觉专家提出的想法都不一样,而应用GAN停止的详细场景运用更是让许多人赞赏深度网络的有限潜力。下面我们来看一下两个最为知名的GAN延申运用。
CycleGAN朱俊彦等人2017年宣布的CycleGAN可以在没有配对图片的状况下将一张图片从X域直接转换到Y域,比如把马变成斑马、将热夏变成盛夏、把莫奈的画变成梵高的画等等。这些看似天方夜谭的转换CycleGAN都能轻松做到,并且结果十分准确。
GauGAN英伟达则经过GAN让人们可以只需求寥寥数笔勾勒出本人的想法,便能失掉一张极为逼真的真实场景图片。虽然这种运用需求的计算成本极为昂扬,但是GauGAN仰仗它的转换才能探求出了史无前例的研讨和运用范围。
结语置信看到这里,你曾经知道了GAN的大致任务原理,并且可以本人入手复杂搭建一个GAN了。
【编辑引荐】
到 2030 年,人工智能和我们的世界将何去何从?
IBM 推出芯片内减速型人工智能处置器
AI人工智能在弱电行业的运用趋向
促进人工智能开展的四种技术
云采用成熟度模型在企业云战略中的意义
(责任编辑:admin)