AIGC:使用生成对抗网络GAN实现MINST手写数字图像生成

1 生成对抗网络

生成对抗网络(Generative Adversarial Networks, GAN)是一种非常经典的生成式模型,它受到双人零和博弈的启发,让两个神经网络在相互博弈中进行学习,开创了生成式模型的新范式。从  2017 年以后,GAN相关的论文呈现井喷式增长。GAN 的应用十分广泛,它的应用包括图像合成、图像编辑、风格迁移、图像超分辨率以及图像转换,数据增强等。

1.1 背景

具有开创性工作的生成对抗网络原文由Goodfellow在2014年发表,当时深度学习领域最好的成果有很大一部分都是判别式模型(比如AlexNet),它们使用反向传播和dropout方法,让模型能够拥有一个良好的梯度结构,从而更迅速地收敛到一个较好的状态。而此时的生成式模型相比之下效果却并不是很好。

论文地址:https://arxiv.org/pdf/1406.2661.pdf

生成式模型的任务是:给你一组原始数据 ,请你生成一组新数据 ,使得这两组数据看起来“尽可能的相似”。而这个任务本质上就是让新数据的概率密度 尽可能地接近原始数据的概率密度 ,也就是说我们要学习 这个函数。传统的生成式模型会将 建模出来,并通过梯度下降优化模型中的参数,最终达到逼近的目的。从理论上来这个方法似乎挺好,但是真实情况下的概率分布往往是难以逼近的,在当时也并没有今天这么多的优化技术,所以实际上这个方法效果一般。

因此,本文作者提供了一种新的思路:我们不去直接逼近 ,而是添加一个判别器来判断生成出来的数据“像不像”原始数据,并且轮流训练这个判别器和生成器。假如这两个model最终都能收敛,那么收敛到的位置一定是生成效果“最像”,而判别效果“最准”的位置,我们直接取此时的生成器作为最终答案即可。原文中举了一个例子:生成器就好比一个造假币的团伙,判别器就好比警察,现在我们来看他们互相博弈的过程:

  1. 第一次,假币团伙没有经验,造了很多7块钱一张的假币,拿出去一花就被警察抓了。
  2. 第二次,假币团伙学聪明了,造了很多看起来很正常的假币;警察一开始没有发现,但是在拿到了一张假币样本之后开始研究,发现了假币的一个缺陷(比如没有让盲人摸的手感线),于是向民众推广这种辨别假币的方法,最终假币团伙的假币就花不出去了。
  3. 第三次,假币团伙修复了上面的缺陷,造了很多新假币;警察又开始寻找新的缺陷并推广……
  4. 久而久之,假币团伙造的假币会越来越接近真币,而警察辨别假币的水平也会越来越高。就像生物学上的协同进化一样,这两个团体会在互相博弈中共同进步。

1.2 工作原理

GAN网络能够在不使用标注数据的情况下来进行生成任务的学习。GAN网络由一个生成器和一个判别器组成。生成器从潜在空间随机取样作为输入,其输出结果需要尽量模仿训练集中的真实样本。判别器的输入则为真实样本或生成器的输出,其目的是将生成器的输出从真实样本中尽可能分别出来。生成器和判别器相互对抗、不断学习,最终目的使得判别器无法判断生成器的输出结果是否真实。

1.2.1 GAN网络组成

GAN网络由生成器和判别器组成:

  • 生成器。生成器学习如何生成看似合理的数据。对判别器来说,这些生成的实例会变成负面训练样本。
  • 判别器。判别器学习如何通过真实数据的学习来辨别出生成器生成的假数据。判别器将惩罚生成器生成的“不可理(假)”的数据结果。

1.2.2 判别器如何工作

判别器在生成对抗网络中,简单来说是一个分类器。该分类器尝试从生成器生成的假数据中识别真实数据。它可以使用任何适用于数据分类的网络架构。判别器在训练中使用误差反向传播机制来计算损失和更新权重参数。

判别器的训练数据有两处来源,

  • 真实数据。真实数据实例,比如人的照片。在训练中,判别器把这些实例用作正面样本。
  • 虚假数据。生成器生成的实例。在训练中,判别器把这些实例用作负面样本。

上图中两个Sample的框就是这两种输入到判别器的样本。注意,在判别器训练时,生成器不会训练,即在生成器为判别器生成示例数据时,生成器的权重保持恒定。

在训练判别器时,判别器连接到两个损失函数。在训练时,判别器忽略生成器的损失而只使用判别器损失。在训练过程中,

  • 判别器对真实数据和来自生成器生成的假数据进行分类。
  • 判别器的损失函数将惩罚由判别器产生的误判,比如把真实实例判定成假,或者把假的实例判定为真。
  • 判别器通过对来自于判别器网损失函数计算的损失进行反向传播。如上图。

1.2.3 生成器如何工作

生成对抗网络里的生成器,通过接受来自于判别器的反馈来学习如何创建假数据。生成器学习如何让(欺骗)判别器把它的输出归类为真实数据。

相对于判别器的训练,生成器的训练要求生成器与判别器有更加紧密的集成。生成器训练包含:

  • 随机输入。神经网络需要某种形式的输入。通常,为了达到某种目的而输入数据,比如一个输入的实例用来进行分类任务或者预测。但当希望输出一整个全新的数据实例,用什么样输入数据呢?

  • 最常见基础形式里,GAN使用随机噪音作为它的输入。然后,生成器将把随机噪音转换成有意义的输出。通过引入噪音,可以从不同分布形式的不同空间采样,让GAN生成一个宽域的数据

  • 实验结果表明,不同噪音的分布不会产生太大影响。因此,可以选择相对较易的采样来源,比如,均匀分布。方便起见,噪音采样空间的维度一般小于输出空间的维度。注意,有些GAN变种不使用随机输入来形成输出。

  • 生成器网络,负责把随机输入转换成数据实例。

  • 判别器网络,负责把上一步生成的数据归类,判别器输出。

  • 生成器的损失函数,负责惩罚企图蒙骗判别器失败的情况(即生成器生成的假数据,被识别器成功识破)。

1.3 训练

 1.3.1 GAN训练的整个步骤

  • 当训练开始,生成器生成一个些很明显的假数据,判别器能快速地学习如何识别出是不是假数据,

  • 随着训练稳步推进,生成器更接近于能生成蒙骗判别器的输出数据。

  • 最终,如果生成器训练得当,在识别真实和虚假方面,判别器变得差强人意,而且将开始把假数据分类为真实数据,识别的准确率降低。

1.3.2 使用判别器训练生成器

要训练神经网络,通过修改网络的权重来减少误差或者输出的损失。在GAN里却不同,生成器不直接连接到损失函数来试图影响损失,而是把生成的数据输出到判别器,而判别器会制造影响误差损失的输出。当生成器生成的数据被判别器成功识别成仿冒时,生成器损失函数会惩罚生成器。

另外,反向传播里也包含网络的额外处理。反向传播通过计算对输出的影响——更改后的权重在多大程度上影响输,来调整每个权重以使其在正确的方向上。但,生成器权重的影响取决于直接输出到判别器的权重的影响。因此,反向传播始于输出且穿过判别器回流到生成器。

在生成器训练时,不希望判别器更改,就像尝试击中一个移动目标,会让一个本身就麻烦的问题变得更加困难。所以,在训练生成器时使用如下流程,

  • 随机噪音采样作为输入。
  • 生成器从采样的随机噪音采样里生成输出。
  • 让判断器判断上述输出是“真”或“假”,以此作为生成器的输出。
  • 从判别器的分类输出计算误差损失。
  • 穿过判别器和生成器的反向传播,从而获得梯度。
  • 使用梯度来更新生成器的权重。

这个流程是生成器训练的一个迭代。

1.3.3 交替训练

生成器和判别器有不同的训练流程,那么如何才能作为一个整体来训练GAN呢?GAN的训练有交替阶段,

  • 判别器训练一个或者多个迭代。
  • 生成器训练一个或者多个迭代。
  • 不断重复1和2步来训练生成器和判别器。

在判别器训练的阶段,保持生成器不变。因为判别器训练会尝试从仿冒数据里分辨出真实数据,判别器必须学习如何识别生成器的缺陷。这就是经过完整训练的生成器和只能生成随机输出的未训练生成器的不同之处。

类似地,在生成器训练的阶段,保持判别器不变。否则,生成器像尝试击中移动目标一样,可能永远无法收敛。

这种往复训练使得GAN能够处理另外一些棘手的数据生成问题。开始于相对较简单的分类任务问题,从而获得一个解决生成难题的立足点。相反地,如果不能训练一个分类器来识别真实数据和生成数据的区别,甚至无法识别与随机初始化输出的区别,那么GAN的训练根本无法开始。

1.3.4 收敛

随着训练进行,生成器不断改善,相对地,由于不能再轻易地识别出真实数据和假冒数据的,判别器的表现越来越差。当生成器完美地成功生成时,判别器的正确率只有50%。基本上和抛一枚硬币来预测正反一样的概率一样。

这种进度展现了作为整体GAN的一个问题,判别器的反馈随着时间的推移越来越不具有意义。过了这个节点之后,即判别器完全给出了随机反馈,如果继续训练GAN,那么生成器将使用判别器给出的无效反馈进行训练,那么生成器的质量可能会崩塌。

对于GAN来说,收敛往往是一个闪现的点,而不是牢固的、稳态的。

2 基于pytorch实现MINIST手写数字图像识别

# -*- coding: utf-8 -*-
import torch
import matplotlib.pyplot as plt
from torchvision import datasets, transforms
from torch import nn, optim
from torch.nn import functional as F
from tqdm import tqdm
import osos.chdir(os.path.dirname(__file__))class Generator(nn.Module):def __init__(self, latent_size, hidden_size, output_size):super(Generator, self).__init__()self.linear = nn.Linear(latent_size, hidden_size)self.out = nn.Linear(hidden_size, output_size)def forward(self, x):x = F.relu(self.linear(x))x = torch.sigmoid(self.out(x))return xclass Discriminator(nn.Module):def __init__(self, input_size, hidden_size):super(Discriminator, self).__init__()self.linear = nn.Linear(input_size, hidden_size)self.out = nn.Linear(hidden_size,1)def forward(self, x):x = F.relu(self.linear(x))x = torch.sigmoid(self.out(x))return xloss_BCE = torch.nn.BCELoss(reduction='sum')# 压缩后的特征维度
latent_size = 16# encoder和decoder中间层的维度
hidden_size = 128# 原始图片和生成图片的维度
input_size = output_size = 28*28epochs = 100
batch_size = 32
learning_rate = 1e-5
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')modelname = ['gan-G.pth', 'gan-D.pth']
model_g = Generator(latent_size, hidden_size, output_size).to(device)
model_d = Discriminator(input_size, hidden_size).to(device)optim_g = torch.optim.Adam(model_g.parameters(), lr=learning_rate)
optim_d = torch.optim.Adam(model_d.parameters(), lr=learning_rate)try:model_g.load_state_dict(torch.load(modelname[0]))model_d.load_state_dict(torch.load(modelname[1]))print('[INFO] Load Model complete')
except:passtrain_loader = torch.utils.data.DataLoader(datasets.MNIST('./data', train=True, download=True,transform=transforms.ToTensor()),batch_size=batch_size, shuffle=True)
test_loader = torch.utils.data.DataLoader(datasets.MNIST('./data', train=False, transform=transforms.ToTensor()),batch_size=batch_size, shuffle=False)for epoch in range(epochs):Gen_loss = 0Dis_loss = 0for imgs, lbls in tqdm(train_loader, desc=f'[train]epoch:{epoch}'):bs = imgs.shape[0]T_imgs = imgs.view(bs, input_size).to(device)T_lbl = torch.ones(bs, 1).to(device)F_lbl = torch.zeros(bs, 1).to(device)sample = torch.randn(bs, latent_size).to(device)F_imgs = model_g(sample)F_Dis = model_d(F_imgs)loss_g = loss_BCE(F_Dis, T_lbl)loss_g.backward()optim_g.step()optim_g.zero_grad()# 训练判别器, 使用判别器分别判断真实图像和伪造图像T_Dis = model_d(T_imgs)F_Dis = model_d(F_imgs.detach())loss_d_T = loss_BCE(T_Dis, T_lbl)loss_d_F = loss_BCE(F_Dis, F_lbl)loss_d = loss_d_T + loss_d_Floss_d.backward()optim_d.step()optim_d.zero_grad()Gen_loss += loss_g.item()Dis_loss += loss_d.item()print(f'epoch:{epoch}|Train G Loss:', Gen_loss/len(train_loader.dataset),' Train D Loss:', Dis_loss/len(train_loader.dataset))model_g.eval()model_d.eval()Gen_score = 0Dis_score = 0for imgs, lbls in tqdm(test_loader, desc=f'[eval]epoch:{epoch}'):bs = imgs.shape[0]T_imgs = imgs.view(bs, input_size).to(device)sample = torch.randn(bs, latent_size).to(device)F_imgs = model_g(sample)F_Dis = model_d(F_imgs)T_Dis = model_d(T_imgs)Gen_score += int(sum(F_Dis >= 0.5))Dis_score += int(sum(T_Dis >= 0.5)) + int(sum(F_Dis < 0.5))print(f'epoch:{epoch}|Test G Score:', Gen_score/len(test_loader.dataset),' Test D Score:', Dis_score/len(test_loader.dataset)/2)model_g.train()model_d.train()model_g.eval()noise = torch.randn(1, latent_size).to(device)gen_imgs = model_g(noise)gen_imgs = gen_imgs[0].view(28, 28)plt.matshow(gen_imgs.cpu().detach().numpy())plt.show()model_g.train()torch.save(model_g.state_dict(), modelname[0])torch.save(model_d.state_dict(), modelname[1])sample = torch.randn(1, latent_size).to(device)
gen_imgs = model_g(sample)
gen_imgs = gen_imgs[0].view(28, 28)
plt.matshow(gen_imgs.cpu().detach().numpy())
plt.show()dataset = datasets.MNIST('./data', train=False, transform=transforms.ToTensor())
index = 0
raw = dataset[index][0].view(28, 28)
plt.matshow(raw.cpu().detach().numpy())
plt.show()
raw = raw.view(1, 28*28)
result = model_d(raw.to(device))
print('该图为真概率为:', result.cpu().detach().numpy())

运行结果展示:

epoch:0|Train G Loss: 0.6875885964711507  Train D Loss: 0.900547916316986
[eval]epoch:0: 100%|██████████| 313/313 [00:01<00:00, 156.80it/s]
epoch:0|Test G Score: 0.508  Test D Score: 0.746
[train]epoch:1: 100%|██████████| 1875/1875 [00:16<00:00, 115.81it/s]
[eval]epoch:1:   0%|          | 0/313 [00:00<?, ?it/s]epoch:1|Train G Loss: 0.6893692766507467  Train D Loss: 0.7974184644699097
[eval]epoch:1: 100%|██████████| 313/313 [00:01<00:00, 207.98it/s]
epoch:1|Test G Score: 0.5464  Test D Score: 0.72665
[train]epoch:2: 100%|██████████| 1875/1875 [00:12<00:00, 146.62it/s]
epoch:2|Train G Loss: 0.673165140692393  Train D Loss: 0.8305254749298095
[eval]epoch:2: 100%|██████████| 313/313 [00:01<00:00, 209.88it/s]
epoch:2|Test G Score: 0.6044  Test D Score: 0.6975
[train]epoch:3: 100%|██████████| 1875/1875 [00:13<00:00, 142.41it/s]
[eval]epoch:3:   0%|          | 0/313 [00:00<?, ?it/s]epoch:3|Train G Loss: 0.655821964041392  Train D Loss: 0.8957085851987203
[eval]epoch:3: 100%|██████████| 313/313 [00:01<00:00, 217.87it/s]
epoch:3|Test G Score: 0.6314  Test D Score: 0.6843
[train]epoch:4: 100%|██████████| 1875/1875 [00:12<00:00, 144.54it/s]
epoch:4|Train G Loss: 0.6303421321868896  Train D Loss: 0.9860619965871175
[eval]epoch:4: 100%|██████████| 313/313 [00:01<00:00, 208.05it/s]
epoch:4|Test G Score: 0.8278  Test D Score: 0.5861
[train]epoch:5: 100%|██████████| 1875/1875 [00:13<00:00, 142.51it/s]
[eval]epoch:5:   0%|          | 0/313 [00:00<?, ?it/s]epoch:5|Train G Loss: 0.618980922015508  Train D Loss: 1.0005566129366557
[eval]epoch:5: 100%|██████████| 313/313 [00:01<00:00, 207.35it/s]
epoch:5|Test G Score: 0.8836  Test D Score: 0.5582
[train]epoch:6: 100%|██████████| 1875/1875 [00:13<00:00, 139.91it/s]
[eval]epoch:6:   0%|          | 0/313 [00:00<?, ?it/s]epoch:6|Train G Loss: 0.6256029644330343  Train D Loss: 0.9548635380109152
[eval]epoch:6: 100%|██████████| 313/313 [00:01<00:00, 178.27it/s]
epoch:6|Test G Score: 0.8472  Test D Score: 0.57635
[train]epoch:7: 100%|██████████| 1875/1875 [00:13<00:00, 138.69it/s]
epoch:7|Train G Loss: 0.6368107126871745  Train D Loss: 0.8985964351971945
[eval]epoch:7: 100%|██████████| 313/313 [00:01<00:00, 219.13it/s]
epoch:7|Test G Score: 0.8338  Test D Score: 0.58305
[train]epoch:8: 100%|██████████| 1875/1875 [00:13<00:00, 136.85it/s]
[eval]epoch:8:   0%|          | 0/313 [00:00<?, ?it/s]epoch:8|Train G Loss: 0.6433719543457032  Train D Loss: 0.8640010238965352
[eval]epoch:8: 100%|██████████| 313/313 [00:01<00:00, 217.03it/s]
epoch:8|Test G Score: 0.8508  Test D Score: 0.5745
[train]epoch:9: 100%|██████████| 1875/1875 [00:13<00:00, 140.35it/s]
epoch:9|Train G Loss: 0.6413426885286967  Train D Loss: 0.856661129951477
[eval]epoch:9: 100%|██████████| 313/313 [00:01<00:00, 205.91it/s]
epoch:9|Test G Score: 0.87  Test D Score: 0.56465
[train]epoch:10: 100%|██████████| 1875/1875 [00:13<00:00, 138.44it/s]
epoch:10|Train G Loss: 0.625159033648173  Train D Loss: 0.8793583973566691
[eval]epoch:10: 100%|██████████| 313/313 [00:01<00:00, 176.33it/s]
epoch:10|Test G Score: 0.8248  Test D Score: 0.58655
[train]epoch:11: 100%|██████████| 1875/1875 [00:14<00:00, 125.72it/s]
[eval]epoch:11:   0%|          | 0/313 [00:00<?, ?it/s]epoch:11|Train G Loss: 0.5767637458483378  Train D Loss: 0.9703869668960571
[eval]epoch:11: 100%|██████████| 313/313 [00:01<00:00, 196.50it/s]
epoch:11|Test G Score: 0.8887  Test D Score: 0.55255
[train]epoch:12: 100%|██████████| 1875/1875 [00:13<00:00, 141.20it/s]
[eval]epoch:12:   0%|          | 0/313 [00:00<?, ?it/s]epoch:12|Train G Loss: 0.5046857475757599  Train D Loss: 1.102966185728709
[eval]epoch:12: 100%|██████████| 313/313 [00:01<00:00, 209.23it/s]
epoch:12|Test G Score: 0.9681  Test D Score: 0.51215
[train]epoch:13: 100%|██████████| 1875/1875 [00:13<00:00, 134.44it/s]
[eval]epoch:13:   0%|          | 0/313 [00:00<?, ?it/s]epoch:13|Train G Loss: 0.45238159114519755  Train D Loss: 1.178836212793986
[eval]epoch:13: 100%|██████████| 313/313 [00:01<00:00, 193.06it/s]
epoch:13|Test G Score: 0.9991  Test D Score: 0.4988
[train]epoch:14: 100%|██████████| 1875/1875 [00:13<00:00, 139.44it/s]
epoch:14|Train G Loss: 0.4352366681098938  Train D Loss: 1.2040739413579304
[eval]epoch:14: 100%|██████████| 313/313 [00:01<00:00, 225.10it/s]
epoch:14|Test G Score: 1.0  Test D Score: 0.49955
[train]epoch:15: 100%|██████████| 1875/1875 [00:13<00:00, 134.89it/s]
[eval]epoch:15:   0%|          | 0/313 [00:00<?, ?it/s]epoch:15|Train G Loss: 0.4290158264954885  Train D Loss: 1.2207831408818564
[eval]epoch:15: 100%|██████████| 313/313 [00:01<00:00, 208.76it/s]
epoch:15|Test G Score: 1.0  Test D Score: 0.5
[train]epoch:16: 100%|██████████| 1875/1875 [00:13<00:00, 140.68it/s]
[eval]epoch:16:   0%|          | 0/313 [00:00<?, ?it/s]epoch:16|Train G Loss: 0.4312060431321462  Train D Loss: 1.2376526662190754
[eval]epoch:16: 100%|██████████| 313/313 [00:01<00:00, 216.49it/s]
epoch:16|Test G Score: 1.0  Test D Score: 0.5
[train]epoch:17: 100%|██████████| 1875/1875 [00:13<00:00, 144.16it/s]
[eval]epoch:17:   0%|          | 0/313 [00:00<?, ?it/s]epoch:17|Train G Loss: 0.44652245319684347  Train D Loss: 1.2268573774973552
[eval]epoch:17: 100%|██████████| 313/313 [00:01<00:00, 219.70it/s]
epoch:17|Test G Score: 1.0  Test D Score: 0.5
[train]epoch:18: 100%|██████████| 1875/1875 [00:13<00:00, 141.00it/s]
[eval]epoch:18:   0%|          | 0/313 [00:00<?, ?it/s]epoch:18|Train G Loss: 0.4680913890361786  Train D Loss: 1.2032010343551636
[eval]epoch:18: 100%|██████████| 313/313 [00:01<00:00, 217.91it/s]
epoch:18|Test G Score: 0.9995  Test D Score: 0.50025
[train]epoch:19: 100%|██████████| 1875/1875 [00:12<00:00, 145.06it/s]
[eval]epoch:19:   0%|          | 0/313 [00:00<?, ?it/s]epoch:19|Train G Loss: 0.48391503705978395  Train D Loss: 1.1880424275080363
[eval]epoch:19: 100%|██████████| 313/313 [00:01<00:00, 216.23it/s]
epoch:19|Test G Score: 0.9842  Test D Score: 0.5079
[train]epoch:20: 100%|██████████| 1875/1875 [00:13<00:00, 138.07it/s]
epoch:20|Train G Loss: 0.4985790911992391  Train D Loss: 1.166650744565328
[eval]epoch:20: 100%|██████████| 313/313 [00:01<00:00, 192.51it/s]
epoch:20|Test G Score: 0.9533  Test D Score: 0.5232
[train]epoch:21: 100%|██████████| 1875/1875 [00:13<00:00, 138.84it/s]
[eval]epoch:21:   0%|          | 0/313 [00:00<?, ?it/s]epoch:21|Train G Loss: 0.5132446504592896  Train D Loss: 1.1380250610987346
[eval]epoch:21: 100%|██████████| 313/313 [00:01<00:00, 222.60it/s]
epoch:21|Test G Score: 0.9594  Test D Score: 0.5202
[train]epoch:22: 100%|██████████| 1875/1875 [00:13<00:00, 143.06it/s]
epoch:22|Train G Loss: 0.5296086418151855  Train D Loss: 1.093998572953542
[eval]epoch:22: 100%|██████████| 313/313 [00:01<00:00, 217.07it/s]
epoch:22|Test G Score: 0.9168  Test D Score: 0.54155
[train]epoch:23: 100%|██████████| 1875/1875 [00:12<00:00, 145.31it/s]
epoch:23|Train G Loss: 0.5381884034315745  Train D Loss: 1.0698080471038818
[eval]epoch:23: 100%|██████████| 313/313 [00:01<00:00, 219.64it/s]
epoch:23|Test G Score: 0.9184  Test D Score: 0.5407
[train]epoch:24: 100%|██████████| 1875/1875 [00:12<00:00, 144.79it/s]
epoch:24|Train G Loss: 0.547061498785019  Train D Loss: 1.0511650788942972
[eval]epoch:24: 100%|██████████| 313/313 [00:01<00:00, 216.98it/s]
epoch:24|Test G Score: 0.8944  Test D Score: 0.55275
[train]epoch:25: 100%|██████████| 1875/1875 [00:12<00:00, 145.18it/s]
epoch:25|Train G Loss: 0.5475555786927541  Train D Loss: 1.0530290616671245
[eval]epoch:25: 100%|██████████| 313/313 [00:01<00:00, 207.76it/s]
epoch:25|Test G Score: 0.851  Test D Score: 0.57445
[train]epoch:26: 100%|██████████| 1875/1875 [00:13<00:00, 144.00it/s]
epoch:26|Train G Loss: 0.5512707938035329  Train D Loss: 1.050317045243581
[eval]epoch:26: 100%|██████████| 313/313 [00:01<00:00, 204.34it/s]
epoch:26|Test G Score: 0.8336  Test D Score: 0.58315
[train]epoch:27: 100%|██████████| 1875/1875 [00:12<00:00, 145.68it/s]
[eval]epoch:27:   0%|          | 0/313 [00:00<?, ?it/s]epoch:27|Train G Loss: 0.5531968828996022  Train D Loss: 1.0482187390327453
[eval]epoch:27: 100%|██████████| 313/313 [00:01<00:00, 219.78it/s]
epoch:27|Test G Score: 0.8356  Test D Score: 0.58215
[train]epoch:28: 100%|██████████| 1875/1875 [00:13<00:00, 135.91it/s]
[eval]epoch:28:   0%|          | 0/313 [00:00<?, ?it/s]epoch:28|Train G Loss: 0.5603058772563935  Train D Loss: 1.0356980097770692
[eval]epoch:28: 100%|██████████| 313/313 [00:01<00:00, 211.54it/s]
epoch:28|Test G Score: 0.8282  Test D Score: 0.5859
[train]epoch:29: 100%|██████████| 1875/1875 [00:13<00:00, 138.85it/s]
epoch:29|Train G Loss: 0.5646376594384511  Train D Loss: 1.0272360989570617
[eval]epoch:29: 100%|██████████| 313/313 [00:01<00:00, 191.37it/s]
epoch:29|Test G Score: 0.812  Test D Score: 0.5939
[train]epoch:30: 100%|██████████| 1875/1875 [00:13<00:00, 143.24it/s]
epoch:30|Train G Loss: 0.5680709630171458  Train D Loss: 1.0258071581522623
[eval]epoch:30: 100%|██████████| 313/313 [00:01<00:00, 171.36it/s]
epoch:30|Test G Score: 0.777  Test D Score: 0.61125
[train]epoch:31: 100%|██████████| 1875/1875 [00:13<00:00, 137.87it/s]
epoch:31|Train G Loss: 0.570367333316803  Train D Loss: 1.0270372252464295
[eval]epoch:31: 100%|██████████| 313/313 [00:01<00:00, 208.48it/s]
epoch:31|Test G Score: 0.788  Test D Score: 0.60585
[train]epoch:32: 100%|██████████| 1875/1875 [00:14<00:00, 125.15it/s]
epoch:32|Train G Loss: 0.5689761372566223  Train D Loss: 1.032519684569041
[eval]epoch:32: 100%|██████████| 313/313 [00:01<00:00, 201.65it/s]
epoch:32|Test G Score: 0.7886  Test D Score: 0.6054
[train]epoch:33: 100%|██████████| 1875/1875 [00:14<00:00, 128.05it/s]
[eval]epoch:33:   0%|          | 0/313 [00:00<?, ?it/s]epoch:33|Train G Loss: 0.5693015421549479  Train D Loss: 1.035339980093638
[eval]epoch:33: 100%|██████████| 313/313 [00:01<00:00, 158.88it/s]
epoch:33|Test G Score: 0.7879  Test D Score: 0.6057
[train]epoch:34: 100%|██████████| 1875/1875 [00:14<00:00, 133.27it/s]
[eval]epoch:34:   0%|          | 0/313 [00:00<?, ?it/s]epoch:34|Train G Loss: 0.5668578405539195  Train D Loss: 1.0422602198282878
[eval]epoch:34: 100%|██████████| 313/313 [00:01<00:00, 207.55it/s]
epoch:34|Test G Score: 0.7765  Test D Score: 0.61145
[train]epoch:35: 100%|██████████| 1875/1875 [00:14<00:00, 129.03it/s]
epoch:35|Train G Loss: 0.5670834843476613  Train D Loss: 1.0474675672849019
[eval]epoch:35: 100%|██████████| 313/313 [00:01<00:00, 215.83it/s]
epoch:35|Test G Score: 0.7736  Test D Score: 0.6128
[train]epoch:36: 100%|██████████| 1875/1875 [00:14<00:00, 128.17it/s]
epoch:36|Train G Loss: 0.5658628444035848  Train D Loss: 1.0513075345993041
[eval]epoch:36: 100%|██████████| 313/313 [00:01<00:00, 162.43it/s]
epoch:36|Test G Score: 0.7579  Test D Score: 0.62045
[train]epoch:37: 100%|██████████| 1875/1875 [00:14<00:00, 128.96it/s]
[eval]epoch:37:   0%|          | 0/313 [00:00<?, ?it/s]epoch:37|Train G Loss: 0.5655051300366719  Train D Loss: 1.0581976316452026
[eval]epoch:37: 100%|██████████| 313/313 [00:01<00:00, 208.46it/s]
epoch:37|Test G Score: 0.7771  Test D Score: 0.61075
[train]epoch:38: 100%|██████████| 1875/1875 [00:14<00:00, 130.93it/s]
epoch:38|Train G Loss: 0.5654594079812367  Train D Loss: 1.0538349712053934
[eval]epoch:38: 100%|██████████| 313/313 [00:01<00:00, 185.77it/s]
epoch:38|Test G Score: 0.7541  Test D Score: 0.62205
[train]epoch:39: 100%|██████████| 1875/1875 [00:14<00:00, 125.45it/s]
[eval]epoch:39:   0%|          | 0/313 [00:00<?, ?it/s]epoch:39|Train G Loss: 0.5672246192773183  Train D Loss: 1.0494285337766012
[eval]epoch:39: 100%|██████████| 313/313 [00:01<00:00, 171.04it/s]
epoch:39|Test G Score: 0.7769  Test D Score: 0.6107
[train]epoch:40: 100%|██████████| 1875/1875 [00:15<00:00, 117.92it/s]
[eval]epoch:40:   0%|          | 0/313 [00:00<?, ?it/s]epoch:40|Train G Loss: 0.5721065460681916  Train D Loss: 1.0330856778462727
[eval]epoch:40: 100%|██████████| 313/313 [00:01<00:00, 187.56it/s]
epoch:40|Test G Score: 0.7586  Test D Score: 0.6199
[train]epoch:41: 100%|██████████| 1875/1875 [00:15<00:00, 122.10it/s]
epoch:41|Train G Loss: 0.5743793784300486  Train D Loss: 1.0288026348431905
[eval]epoch:41: 100%|██████████| 313/313 [00:01<00:00, 206.37it/s]
epoch:41|Test G Score: 0.7728  Test D Score: 0.6129
[train]epoch:42: 100%|██████████| 1875/1875 [00:13<00:00, 139.09it/s]
epoch:42|Train G Loss: 0.5785000865777333  Train D Loss: 1.021603403186798
[eval]epoch:42: 100%|██████████| 313/313 [00:01<00:00, 221.09it/s]
epoch:42|Test G Score: 0.7526  Test D Score: 0.6229
[train]epoch:43: 100%|██████████| 1875/1875 [00:12<00:00, 144.34it/s]
epoch:43|Train G Loss: 0.5783152904351553  Train D Loss: 1.0219791579882305
[eval]epoch:43: 100%|██████████| 313/313 [00:01<00:00, 221.55it/s]
epoch:43|Test G Score: 0.7678  Test D Score: 0.6158
[train]epoch:44: 100%|██████████| 1875/1875 [00:13<00:00, 142.33it/s]
[eval]epoch:44:   0%|          | 0/313 [00:00<?, ?it/s]epoch:44|Train G Loss: 0.5834402229150136  Train D Loss: 1.0131274561564128
[eval]epoch:44: 100%|██████████| 313/313 [00:01<00:00, 209.97it/s]
epoch:44|Test G Score: 0.7212  Test D Score: 0.63855
[train]epoch:45: 100%|██████████| 1875/1875 [00:13<00:00, 135.03it/s]
epoch:45|Train G Loss: 0.5835320703665415  Train D Loss: 1.0110607721964517
[eval]epoch:45: 100%|██████████| 313/313 [00:01<00:00, 210.29it/s]
epoch:45|Test G Score: 0.776  Test D Score: 0.61135
[train]epoch:46: 100%|██████████| 1875/1875 [00:13<00:00, 142.94it/s]
[eval]epoch:46:   0%|          | 0/313 [00:00<?, ?it/s]epoch:46|Train G Loss: 0.5882964856624603  Train D Loss: 0.9964836405118307
[eval]epoch:46: 100%|██████████| 313/313 [00:01<00:00, 221.34it/s]
epoch:46|Test G Score: 0.7191  Test D Score: 0.64005
[train]epoch:47: 100%|██████████| 1875/1875 [00:13<00:00, 143.21it/s]
[eval]epoch:47:   0%|          | 0/313 [00:00<?, ?it/s]epoch:47|Train G Loss: 0.590389885600408  Train D Loss: 0.9914610226949055
[eval]epoch:47: 100%|██████████| 313/313 [00:01<00:00, 208.52it/s]
epoch:47|Test G Score: 0.7548  Test D Score: 0.62225
[train]epoch:48: 100%|██████████| 1875/1875 [00:14<00:00, 125.00it/s]
[eval]epoch:48:   0%|          | 0/313 [00:00<?, ?it/s]epoch:48|Train G Loss: 0.594319108804067  Train D Loss: 0.9779991204897562
[eval]epoch:48: 100%|██████████| 313/313 [00:01<00:00, 193.07it/s]
epoch:48|Test G Score: 0.7086  Test D Score: 0.64535
[train]epoch:49: 100%|██████████| 1875/1875 [00:14<00:00, 127.71it/s]
[eval]epoch:49:   0%|          | 0/313 [00:00<?, ?it/s]epoch:49|Train G Loss: 0.5970552474975586  Train D Loss: 0.9745462191263835
[eval]epoch:49: 100%|██████████| 313/313 [00:01<00:00, 202.03it/s]
epoch:49|Test G Score: 0.7224  Test D Score: 0.6382
[train]epoch:50: 100%|██████████| 1875/1875 [00:13<00:00, 134.68it/s]
epoch:50|Train G Loss: 0.5979735075155894  Train D Loss: 0.9683707204818726
[eval]epoch:50: 100%|██████████| 313/313 [00:01<00:00, 213.01it/s]
epoch:50|Test G Score: 0.7138  Test D Score: 0.6426
[train]epoch:51: 100%|██████████| 1875/1875 [00:14<00:00, 132.22it/s]
[eval]epoch:51:   0%|          | 0/313 [00:00<?, ?it/s]epoch:51|Train G Loss: 0.6023209547519683  Train D Loss: 0.9649083198229472
[eval]epoch:51: 100%|██████████| 313/313 [00:01<00:00, 184.66it/s]
epoch:51|Test G Score: 0.7182  Test D Score: 0.64045
[train]epoch:52: 100%|██████████| 1875/1875 [00:13<00:00, 135.84it/s]
epoch:52|Train G Loss: 0.6021316982587178  Train D Loss: 0.9624602799415588
[eval]epoch:52: 100%|██████████| 313/313 [00:01<00:00, 201.77it/s]
epoch:52|Test G Score: 0.6623  Test D Score: 0.6681
[train]epoch:53: 100%|██████████| 1875/1875 [00:14<00:00, 130.29it/s]
[eval]epoch:53:   0%|          | 0/313 [00:00<?, ?it/s]epoch:53|Train G Loss: 0.6053468057314555  Train D Loss: 0.9644535427729288
[eval]epoch:53: 100%|██████████| 313/313 [00:01<00:00, 211.69it/s]
epoch:53|Test G Score: 0.6811  Test D Score: 0.65875
[train]epoch:54: 100%|██████████| 1875/1875 [00:13<00:00, 134.95it/s]
epoch:54|Train G Loss: 0.6043922148386638  Train D Loss: 0.96494202003479
[eval]epoch:54: 100%|██████████| 313/313 [00:01<00:00, 204.23it/s]
epoch:54|Test G Score: 0.7005  Test D Score: 0.64905
[train]epoch:55: 100%|██████████| 1875/1875 [00:14<00:00, 128.87it/s]
[eval]epoch:55:   0%|          | 0/313 [00:00<?, ?it/s]epoch:55|Train G Loss: 0.6066651909510294  Train D Loss: 0.9640112183570861
[eval]epoch:55: 100%|██████████| 313/313 [00:01<00:00, 178.45it/s]
epoch:55|Test G Score: 0.6892  Test D Score: 0.65445
[train]epoch:56: 100%|██████████| 1875/1875 [00:15<00:00, 124.12it/s]
epoch:56|Train G Loss: 0.6085456945737203  Train D Loss: 0.9618674217542013
[eval]epoch:56: 100%|██████████| 313/313 [00:01<00:00, 206.16it/s]
epoch:56|Test G Score: 0.6819  Test D Score: 0.65785
[train]epoch:57: 100%|██████████| 1875/1875 [00:14<00:00, 126.93it/s]
[eval]epoch:57:   0%|          | 0/313 [00:00<?, ?it/s]epoch:57|Train G Loss: 0.6037535588264465  Train D Loss: 0.9710461963017781
[eval]epoch:57: 100%|██████████| 313/313 [00:01<00:00, 190.59it/s]
epoch:57|Test G Score: 0.6865  Test D Score: 0.65595
[train]epoch:58: 100%|██████████| 1875/1875 [00:14<00:00, 126.89it/s]
[eval]epoch:58:   0%|          | 0/313 [00:00<?, ?it/s]epoch:58|Train G Loss: 0.6051236891269683  Train D Loss: 0.9722556677818298
[eval]epoch:58: 100%|██████████| 313/313 [00:01<00:00, 190.42it/s]
epoch:58|Test G Score: 0.676  Test D Score: 0.66145
[train]epoch:59: 100%|██████████| 1875/1875 [00:14<00:00, 132.28it/s]
[eval]epoch:59:   0%|          | 0/313 [00:00<?, ?it/s]epoch:59|Train G Loss: 0.6038665617624919  Train D Loss: 0.9729498882293701
[eval]epoch:59: 100%|██████████| 313/313 [00:01<00:00, 206.56it/s]
epoch:59|Test G Score: 0.7044  Test D Score: 0.64705
[train]epoch:60: 100%|██████████| 1875/1875 [00:15<00:00, 120.76it/s]
epoch:60|Train G Loss: 0.6056656357765198  Train D Loss: 0.9696332246780396
[eval]epoch:60: 100%|██████████| 313/313 [00:01<00:00, 181.07it/s]
epoch:60|Test G Score: 0.7004  Test D Score: 0.6487
[train]epoch:61: 100%|██████████| 1875/1875 [00:14<00:00, 132.07it/s]
[eval]epoch:61:   0%|          | 0/313 [00:00<?, ?it/s]epoch:61|Train G Loss: 0.6064142129898071  Train D Loss: 0.9691213243484497
[eval]epoch:61: 100%|██████████| 313/313 [00:01<00:00, 210.15it/s]
epoch:61|Test G Score: 0.7098  Test D Score: 0.64445
[train]epoch:62: 100%|██████████| 1875/1875 [00:14<00:00, 133.92it/s]
[eval]epoch:62:   0%|          | 0/313 [00:00<?, ?it/s]epoch:62|Train G Loss: 0.6020772522131602  Train D Loss: 0.9768669911066691
[eval]epoch:62: 100%|██████████| 313/313 [00:01<00:00, 209.06it/s]
epoch:62|Test G Score: 0.6712  Test D Score: 0.66365
[train]epoch:63: 100%|██████████| 1875/1875 [00:15<00:00, 123.73it/s]
epoch:63|Train G Loss: 0.6038358168443044  Train D Loss: 0.9754874487559001
[eval]epoch:63: 100%|██████████| 313/313 [00:01<00:00, 204.81it/s]
epoch:63|Test G Score: 0.683  Test D Score: 0.65755
[train]epoch:64: 100%|██████████| 1875/1875 [00:15<00:00, 122.37it/s]
epoch:64|Train G Loss: 0.6046170507748921  Train D Loss: 0.9736968674023946
[eval]epoch:64: 100%|██████████| 313/313 [00:01<00:00, 208.06it/s]
epoch:64|Test G Score: 0.6898  Test D Score: 0.6542
[train]epoch:65: 100%|██████████| 1875/1875 [00:14<00:00, 128.07it/s]
epoch:65|Train G Loss: 0.6027337124824524  Train D Loss: 0.9787304972330729
[eval]epoch:65: 100%|██████████| 313/313 [00:01<00:00, 194.54it/s]
epoch:65|Test G Score: 0.707  Test D Score: 0.6454
[train]epoch:66: 100%|██████████| 1875/1875 [00:13<00:00, 138.57it/s]
epoch:66|Train G Loss: 0.601389243777593  Train D Loss: 0.9830222620328267
[eval]epoch:66: 100%|██████████| 313/313 [00:01<00:00, 184.05it/s]
epoch:66|Test G Score: 0.6984  Test D Score: 0.6497
[train]epoch:67: 100%|██████████| 1875/1875 [00:13<00:00, 135.19it/s]
epoch:67|Train G Loss: 0.6001422825495402  Train D Loss: 0.9867032630284627
[eval]epoch:67: 100%|██████████| 313/313 [00:01<00:00, 220.74it/s]
epoch:67|Test G Score: 0.7095  Test D Score: 0.64385
[train]epoch:68: 100%|██████████| 1875/1875 [00:13<00:00, 142.23it/s]
[eval]epoch:68:   0%|          | 0/313 [00:00<?, ?it/s]epoch:68|Train G Loss: 0.6018287893931071  Train D Loss: 0.985523048210144
[eval]epoch:68: 100%|██████████| 313/313 [00:01<00:00, 223.06it/s]
epoch:68|Test G Score: 0.71  Test D Score: 0.6431
[train]epoch:69: 100%|██████████| 1875/1875 [00:13<00:00, 144.19it/s]
[eval]epoch:69:   0%|          | 0/313 [00:00<?, ?it/s]epoch:69|Train G Loss: 0.5990714596430461  Train D Loss: 0.9925410816510518
[eval]epoch:69: 100%|██████████| 313/313 [00:01<00:00, 220.08it/s]
epoch:69|Test G Score: 0.7185  Test D Score: 0.63905
[train]epoch:70: 100%|██████████| 1875/1875 [00:12<00:00, 144.33it/s]
epoch:70|Train G Loss: 0.5974074437777201  Train D Loss: 0.9976363753318787
[eval]epoch:70: 100%|██████████| 313/313 [00:01<00:00, 216.39it/s]
epoch:70|Test G Score: 0.6939  Test D Score: 0.65165
[train]epoch:71: 100%|██████████| 1875/1875 [00:13<00:00, 142.39it/s]
epoch:71|Train G Loss: 0.5952021143277486  Train D Loss: 1.00476540184021
[eval]epoch:71: 100%|██████████| 313/313 [00:01<00:00, 210.13it/s]
epoch:71|Test G Score: 0.7088  Test D Score: 0.64405
[train]epoch:72: 100%|██████████| 1875/1875 [00:13<00:00, 142.71it/s]
[eval]epoch:72:   0%|          | 0/313 [00:00<?, ?it/s]epoch:72|Train G Loss: 0.5942630872408549  Train D Loss: 1.0061080835024516
[eval]epoch:72: 100%|██████████| 313/313 [00:01<00:00, 224.19it/s]
epoch:72|Test G Score: 0.6923  Test D Score: 0.65205
[train]epoch:73: 100%|██████████| 1875/1875 [00:13<00:00, 142.84it/s]
[eval]epoch:73:   0%|          | 0/313 [00:00<?, ?it/s]epoch:73|Train G Loss: 0.5953716031074524  Train D Loss: 1.0063148941040039
[eval]epoch:73: 100%|██████████| 313/313 [00:01<00:00, 219.23it/s]
epoch:73|Test G Score: 0.7076  Test D Score: 0.6441
[train]epoch:74: 100%|██████████| 1875/1875 [00:12<00:00, 144.75it/s]
[eval]epoch:74:   0%|          | 0/313 [00:00<?, ?it/s]epoch:74|Train G Loss: 0.5940316377321879  Train D Loss: 1.0076266440709432
[eval]epoch:74: 100%|██████████| 313/313 [00:01<00:00, 221.06it/s]
epoch:74|Test G Score: 0.7006  Test D Score: 0.6474
[train]epoch:75: 100%|██████████| 1875/1875 [00:13<00:00, 143.64it/s]
epoch:75|Train G Loss: 0.5935685668627421  Train D Loss: 1.0103028052012126
[eval]epoch:75: 100%|██████████| 313/313 [00:01<00:00, 219.64it/s]
epoch:75|Test G Score: 0.7092  Test D Score: 0.6431
[train]epoch:76: 100%|██████████| 1875/1875 [00:13<00:00, 137.31it/s]
epoch:76|Train G Loss: 0.5929852469126383  Train D Loss: 1.01107987130483
[eval]epoch:76: 100%|██████████| 313/313 [00:01<00:00, 220.90it/s]
epoch:76|Test G Score: 0.701  Test D Score: 0.6474
[train]epoch:77: 100%|██████████| 1875/1875 [00:13<00:00, 143.02it/s]
[eval]epoch:77:   0%|          | 0/313 [00:00<?, ?it/s]epoch:77|Train G Loss: 0.592886395740509  Train D Loss: 1.011134458955129
[eval]epoch:77: 100%|██████████| 313/313 [00:01<00:00, 219.19it/s]
epoch:77|Test G Score: 0.6894  Test D Score: 0.6533
[train]epoch:78: 100%|██████████| 1875/1875 [00:13<00:00, 142.70it/s]
[eval]epoch:78:   0%|          | 0/313 [00:00<?, ?it/s]epoch:78|Train G Loss: 0.5935037167231242  Train D Loss: 1.0090930287996929
[eval]epoch:78: 100%|██████████| 313/313 [00:01<00:00, 220.58it/s]
epoch:78|Test G Score: 0.689  Test D Score: 0.6536
[train]epoch:79: 100%|██████████| 1875/1875 [00:13<00:00, 138.54it/s]
epoch:79|Train G Loss: 0.5961865306695302  Train D Loss: 1.0014720521291096
[eval]epoch:79: 100%|██████████| 313/313 [00:01<00:00, 194.10it/s]
epoch:79|Test G Score: 0.6801  Test D Score: 0.65815
[train]epoch:80: 100%|██████████| 1875/1875 [00:14<00:00, 131.92it/s]
epoch:80|Train G Loss: 0.5974672158241272  Train D Loss: 1.0004722514470419
[eval]epoch:80: 100%|██████████| 313/313 [00:01<00:00, 195.83it/s]
epoch:80|Test G Score: 0.6665  Test D Score: 0.6654
[train]epoch:81: 100%|██████████| 1875/1875 [00:13<00:00, 137.00it/s]
[eval]epoch:81:   0%|          | 0/313 [00:00<?, ?it/s]epoch:81|Train G Loss: 0.5967240933577219  Train D Loss: 0.9962765798886617
[eval]epoch:81: 100%|██████████| 313/313 [00:01<00:00, 218.17it/s]
epoch:81|Test G Score: 0.6757  Test D Score: 0.66115
[train]epoch:82: 100%|██████████| 1875/1875 [00:12<00:00, 144.36it/s]
[eval]epoch:82:   0%|          | 0/313 [00:00<?, ?it/s]epoch:82|Train G Loss: 0.6012879039287568  Train D Loss: 0.9886766562779744
[eval]epoch:82: 100%|██████████| 313/313 [00:01<00:00, 219.59it/s]
epoch:82|Test G Score: 0.7122  Test D Score: 0.64295
[train]epoch:83: 100%|██████████| 1875/1875 [00:13<00:00, 143.35it/s]
[eval]epoch:83:   0%|          | 0/313 [00:00<?, ?it/s]epoch:83|Train G Loss: 0.6017070343971253  Train D Loss: 0.9845438721021016
[eval]epoch:83: 100%|██████████| 313/313 [00:01<00:00, 221.00it/s]
epoch:83|Test G Score: 0.7056  Test D Score: 0.64625
[train]epoch:84: 100%|██████████| 1875/1875 [00:13<00:00, 141.74it/s]
epoch:84|Train G Loss: 0.6046234590848287  Train D Loss: 0.9782138200759888
[eval]epoch:84: 100%|██████████| 313/313 [00:01<00:00, 215.53it/s]
epoch:84|Test G Score: 0.6848  Test D Score: 0.65615
[train]epoch:85: 100%|██████████| 1875/1875 [00:13<00:00, 144.12it/s]
epoch:85|Train G Loss: 0.6056904099464416  Train D Loss: 0.9750500425338745
[eval]epoch:85: 100%|██████████| 313/313 [00:01<00:00, 208.30it/s]
epoch:85|Test G Score: 0.695  Test D Score: 0.6512
[train]epoch:86: 100%|██████████| 1875/1875 [00:13<00:00, 144.12it/s]
epoch:86|Train G Loss: 0.6056853388945261  Train D Loss: 0.9744437066078186
[eval]epoch:86: 100%|██████████| 313/313 [00:01<00:00, 218.78it/s]
epoch:86|Test G Score: 0.6631  Test D Score: 0.6673
[train]epoch:87: 100%|██████████| 1875/1875 [00:13<00:00, 142.24it/s]
epoch:87|Train G Loss: 0.6060712915102641  Train D Loss: 0.974925676759084
[eval]epoch:87: 100%|██████████| 313/313 [00:01<00:00, 208.39it/s]
epoch:87|Test G Score: 0.7048  Test D Score: 0.6469
[train]epoch:88: 100%|██████████| 1875/1875 [00:13<00:00, 140.91it/s]
epoch:88|Train G Loss: 0.6069549886067709  Train D Loss: 0.9742900141716003
[eval]epoch:88: 100%|██████████| 313/313 [00:01<00:00, 216.85it/s]
epoch:88|Test G Score: 0.6769  Test D Score: 0.6605
[train]epoch:89: 100%|██████████| 1875/1875 [00:12<00:00, 145.08it/s]
[eval]epoch:89:   0%|          | 0/313 [00:00<?, ?it/s]epoch:89|Train G Loss: 0.6073180778344472  Train D Loss: 0.9727328990936279
[eval]epoch:89: 100%|██████████| 313/313 [00:01<00:00, 217.77it/s]
epoch:89|Test G Score: 0.6886  Test D Score: 0.65475
[train]epoch:90: 100%|██████████| 1875/1875 [00:14<00:00, 132.71it/s]
epoch:90|Train G Loss: 0.608623680416743  Train D Loss: 0.969793729686737
[eval]epoch:90: 100%|██████████| 313/313 [00:01<00:00, 203.90it/s]
epoch:90|Test G Score: 0.6534  Test D Score: 0.672
[train]epoch:91: 100%|██████████| 1875/1875 [00:13<00:00, 135.12it/s]
[eval]epoch:91:   0%|          | 0/313 [00:00<?, ?it/s]epoch:91|Train G Loss: 0.6114623177687327  Train D Loss: 0.9638599496205648
[eval]epoch:91: 100%|██████████| 313/313 [00:01<00:00, 223.67it/s]
epoch:91|Test G Score: 0.674  Test D Score: 0.66135
[train]epoch:92: 100%|██████████| 1875/1875 [00:14<00:00, 132.12it/s]
[eval]epoch:92:   0%|          | 0/313 [00:00<?, ?it/s]epoch:92|Train G Loss: 0.610090655485789  Train D Loss: 0.967642946879069
[eval]epoch:92: 100%|██████████| 313/313 [00:01<00:00, 211.04it/s]
epoch:92|Test G Score: 0.6511  Test D Score: 0.67365
[train]epoch:93: 100%|██████████| 1875/1875 [00:13<00:00, 140.41it/s]
[eval]epoch:93:   0%|          | 0/313 [00:00<?, ?it/s]epoch:93|Train G Loss: 0.6112490410804748  Train D Loss: 0.9639183290481568
[eval]epoch:93: 100%|██████████| 313/313 [00:01<00:00, 209.29it/s]
epoch:93|Test G Score: 0.6783  Test D Score: 0.65955
[train]epoch:94: 100%|██████████| 1875/1875 [00:13<00:00, 137.81it/s]
[eval]epoch:94:   0%|          | 0/313 [00:00<?, ?it/s]epoch:94|Train G Loss: 0.611319488286972  Train D Loss: 0.9641610447565715
[eval]epoch:94: 100%|██████████| 313/313 [00:01<00:00, 213.48it/s]
epoch:94|Test G Score: 0.6501  Test D Score: 0.6738
[train]epoch:95: 100%|██████████| 1875/1875 [00:13<00:00, 141.90it/s]
[eval]epoch:95:   0%|          | 0/313 [00:00<?, ?it/s]epoch:95|Train G Loss: 0.6123758721828461  Train D Loss: 0.9626293495814006
[eval]epoch:95: 100%|██████████| 313/313 [00:01<00:00, 216.70it/s]
epoch:95|Test G Score: 0.6813  Test D Score: 0.6582
[train]epoch:96: 100%|██████████| 1875/1875 [00:13<00:00, 138.14it/s]
[eval]epoch:96:   0%|          | 0/313 [00:00<?, ?it/s]epoch:96|Train G Loss: 0.6152368485768636  Train D Loss: 0.9562486302693685
[eval]epoch:96: 100%|██████████| 313/313 [00:01<00:00, 214.50it/s]
epoch:96|Test G Score: 0.6816  Test D Score: 0.65805
[train]epoch:97: 100%|██████████| 1875/1875 [00:13<00:00, 143.21it/s]
[eval]epoch:97:   0%|          | 0/313 [00:00<?, ?it/s]epoch:97|Train G Loss: 0.6154786991437277  Train D Loss: 0.9537186385154724
[eval]epoch:97: 100%|██████████| 313/313 [00:01<00:00, 208.64it/s]
epoch:97|Test G Score: 0.665  Test D Score: 0.66625
[train]epoch:98: 100%|██████████| 1875/1875 [00:13<00:00, 143.94it/s]
[eval]epoch:98:   0%|          | 0/313 [00:00<?, ?it/s]epoch:98|Train G Loss: 0.6172778903802236  Train D Loss: 0.9502429571151734
[eval]epoch:98: 100%|██████████| 313/313 [00:01<00:00, 220.16it/s]
epoch:98|Test G Score: 0.6544  Test D Score: 0.67145
[train]epoch:99: 100%|██████████| 1875/1875 [00:13<00:00, 143.74it/s]
[eval]epoch:99:   0%|          | 0/313 [00:00<?, ?it/s]epoch:99|Train G Loss: 0.6185870854536692  Train D Loss: 0.9473249974250794
[eval]epoch:99: 100%|██████████| 313/313 [00:01<00:00, 220.78it/s]
epoch:99|Test G Score: 0.6617  Test D Score: 0.66815
该图为真概率为: [[0.903977]]

第一个图是刚开始训练时的生成数据,第二个图是训练到50个epochs生成的数据,第三个图是训练到100epochs生成的数据。

3 总结

生成模型是深度学习领域难度较大且较为重要的一类模型。生成对抗网络能够在半监督或者无监督的应用场景下进行生成任务的学习。目前而言,生成对抗网络在计算机视觉、自然语言处理等领域取得了令人惊叹的成果。生成对抗模型是近年来复杂数据分布上无监督学习最具前景的方法之一。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/187062.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue项目js原生属性IntersectionObserver实现图片懒加载

vue项目js原生属性IntersectionObserver实现图片懒加载 IntersectionObserver 使用js原生属性IntersectionObserver实现观察img元素是否处于游览器视口中 懒加载原理&#xff1a;给img设置一个默认url图片&#xff0c;观察图片处于视口内以后&#xff0c;动态改变img的url为自己…

如何利用产品帮助中心提升用户体验

在当今竞争激烈的市场中&#xff0c;提供优秀的用户体验是吸引和保留客户的关键。而一个高效和易于使用的产品帮助中心&#xff0c;正成为越来越多企业用以提升用户体验的重要工具。产品帮助中心是一个集中的信息库&#xff0c;为用户提供关于产品功能、故障排除、常见问题解答…

SQL Server SSIS的安装

标题SQL SERVER 安装 下载SQL SERVER数据库&#xff1a;&#xff08;以SQL SERVER 2022 Developer版本&#xff09;(https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads?rtc1) 以administrator权限安装&#xff1a; 下载完成后&#xff0c;会出现以下界面&a…

GPIO实验:ARM汇编代码实现LED灯亮灭控制

GPIO实验&#xff1a;ARM汇编代码实现LED灯亮灭控制 一、 汇编工程模板Makefile分析 NAMEasm-led #指定编译的源文件名字 CROSS_COMPILE arm-linux-gnueabihf- #指定交叉编译工具链前缀CC $(CROSS_COMPILE)gcc #指定gcc名字LD $(CROSS_COMPILE)ld #指定链接器名字…

pytorch直线拟合

目录 1、数据分析 2、pytorch直线拟合 1、数据分析 直线拟合的前提条件通常包括以下几点&#xff1a; 存在线性关系&#xff1a;这是进行直线拟合的基础&#xff0c;数据点之间应该存在一种线性关系&#xff0c;即数据的分布可以用直线来近似描述。这种线性关系可以是数据点…

【hcie-cloud】【2】华为云Stack解决方案介绍、缩略语整理 【下】

文章目录 华为文档获取方式、云计算发展背景、坚实基座华为云Stack&#xff0c;政企只能升级首选智能数据湖仓一体&#xff0c;让业务洞见更准&#xff0c;价值兑现更快MRS&#xff1a;一个架构可构建三种数据湖&#xff0c;业务场景更丰富离线数据湖&#xff1a;提供云原生、湖…

使用jdk21预览版 --enable-preview

异常 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.10.1:compile (default-compile) on project sb3: Compilation failure [ERROR] --enable-preview 一起使用时无效 [ERROR] &#xff08;仅发行版 21 支持预览语言功能&#xff09; 解决…

API低代码开发应用场景

什么是API低代码开发平台 API低代码开发平台是一种基于低代码开发的技术平台&#xff0c;它可以帮助企业快速构建和部署API应用程序。该平台通过提供可视化的开发工具、预定义的组件和模板、自动化的代码生成等功能&#xff0c;使得开发者可以在不需要编写大量代码的情况下&am…

秋招进入尾声了,还有哪些公司和岗位可以投递?

24届秋招基本已经进入尾声了&#xff0c;接下来就是秋招补录了&#xff0c;最近在微信群看到一些同学再问哪些公司还在招人的。 在这里跟大家分享一份2024届秋招信息汇总表&#xff0c;目前已更新2000家&#xff0c;不仅有互联网公司&#xff0c;还有外企、国企、各类研究所&am…

【师兄啊师兄2】大爆料,敖乙回归,创造新里程碑,有望做成年番

Hello,小伙伴们&#xff0c;我是小郑继续为大家深度解析国漫资讯。 深度爆料《师兄啊师兄》最新资讯消息&#xff0c;玄机公司&#xff0c;作为动漫制作界的佼佼者&#xff0c;其制作的动漫作品一直以来备受瞩目。如今&#xff0c;在斗罗大陆第二部和吞噬星空第四季的热播之下…

ideal一键部署SpringBoot项目jar包到服务器

一 简介 我们在开发环境部署项目一般通过ideal将项目打包成jar包&#xff0c;然后连接linux服务器&#xff0c;将jar手动上传到服务中&#xff0c;重启服务。 概括的说流程是这样的: 本地打包->上传到服务器->kill掉以前的服务->重新启动jar包服务 每次总是循环这一…

抢抓泛娱乐社交出海新风口!Flat Ads深圳沙龙活动引爆海外市场

随着全球化进程的加速&#xff0c;中国的应用类APP不断走向国际市场。作为产品和服务的提供者&#xff0c;中国开发者围绕社交泛娱乐创新&#xff0c;开启直播出海、短视频出海、游戏社交出海、1V1 视频出海、音频社交出海等出海热潮。“社交、泛娱乐”融合成为行业主流发展趋势…

【2023-11-09】git使用随记——gitignore文件配置某些文件忽略

git使用随记——gitignore文件配置某些文件忽略 通过git进行版本控制在项目中是非常常见的&#xff0c;一些项目构建上的文件通常是不需要进行版本控制的&#xff0c;也就无需推送到git仓库中&#xff0c;比如前端项目中的node_module目录。提供配置.gitignore文件 但是某些情…

医学图像 ABIDE 等数据集 .nii.gz Python格式化显示

nii.gz 文件 .nii.gz 文件通常是医学影像数据的一种常见格式&#xff0c;比如神经影像&#xff08;如脑部MRI&#xff09;。这种文件格式通常是经过gzip压缩的NIfTI格式&#xff08;Neuroimaging Informatics Technology Initiative&#xff09;。 要在Python中查看.nii.gz文…

让你认识C++中的模板

目录 一. 泛型编程1、定义 二、函数模板1、定义2、格式3、函数模板的实例化&#xff08;1&#xff09;、强制转化&#xff08;2&#xff09;、显式实例化 三、类模板1、 类模板的定义格式2、实例3、 类模板的实例化 一. 泛型编程 1、定义 泛型编程&#xff1a;编写与类型无关…

Flink的API分层、架构与组件原理、并行度、任务执行计划

Flink的API分层 Apache Flink的API分为四个层次&#xff0c;每个层次都提供不同的抽象和功能&#xff0c;以满足不同场景下的数据处理需求。下面是这四个层次的具体介绍&#xff1a; CEP API&#xff1a;Flink API 最底层的抽象为有状态实时流处理。其抽象实现是Process Functi…

《研发效能(DevOps)工程师》课程简介(五)丨IDCF

由国家工业和信息化部教育与考试中心颁发的职业技术证书&#xff0c;也是国内首个研发效能&#xff08;DevOps&#xff09;职业技术认证&#xff0c;内涵1000页学习教材2000分钟的课程内容讲解460多个技术知识点300多道练习题。 在这里&#xff0c;你不仅可以了解到华为、微软、…

服装展示服务预约小程序的内容如何

互联网电商深入&#xff0c;很多服装商家开始线上卖货经营、会员管理及私域营销等&#xff0c;这也是当今商家们的一个优选项&#xff0c;当然除了直接卖货以外&#xff0c;展示和预约、客户交互也同样是不少商家需要的。 那么商家通过服装展示预约小程序能够实现什么效果呢&a…

Flutter——最详细(AppBar)使用教程

AppBar简介 Material Design 应用栏(标题栏) 使用场景&#xff1a; 顶部标题栏包括一些常用的菜单按钮 属性作用leading左边工具视图automaticallyImplyLeading左边图标的颜色title标题视图actions右边菜单按钮flexibleSpace其高度将与应用栏的整体高度相同bottom左侧底部文本内…

【Delphi】Android 开发HTTP请求出错解决方案

目录 一、故障现象 二、原因及解决方案 一、故障现象 在android内建的WebBrowser浏览器中通过http访问一个网站&#xff08;注意不是https&#xff09;&#xff0c;出现如下错误提示&#xff1a; 在使用ntfy的时候&#xff0c;访问http定义的服务器地址&#xff08;注意不是…