当前位置: 首页 > news >正文

网站开发选asp还是hph网页设计分为几个部分

网站开发选asp还是hph,网页设计分为几个部分,有没有个人做试卷网站的,logo设计图片免费 图案本文为此系列的第二篇DCGAN#xff0c;上一篇为初级的GAN。普通GAN有训练不稳定、容易陷入局部最优等问题#xff0c;DCGAN相对于普通GAN的优点是能够生成更加逼真、清晰的图像。 因为DCGAN是在GAN的基础上的改造#xff0c;所以本篇只针对GAN的改造点进行讲解#xff0c;其… 本文为此系列的第二篇DCGAN上一篇为初级的GAN。普通GAN有训练不稳定、容易陷入局部最优等问题DCGAN相对于普通GAN的优点是能够生成更加逼真、清晰的图像。 因为DCGAN是在GAN的基础上的改造所以本篇只针对GAN的改造点进行讲解其他还有不太了解的原理可以返回上一篇进行观看。 本文仍然使用MNIST手写数字数据集来构建一个深度卷积GAN(Deep Convolutional GAN)DCGAN将使用卷积来替代全连接层点击查看论文generator的网络结构图如下 DCGAN模型有以下特点 判别器模型使用卷积步长取代了空间池化生成器模型中使用反卷积操作扩大数据维度。除了生成器模型的输出层和判别器模型的输入层在整个对抗网络的其它层上都使用了Batch Normalization原因是Batch Normalization可以稳定学习有助于优化初始化参数值不良而导致的训练问题。整个网络去除了全连接层直接使用卷积层连接生成器和判别器的输入层以及输出层。在生成器的输出层使用Tanh激活函数以控制输出范围而在其它层中均使用了ReLU激活函数在判别器上使用Leaky ReLU激活函数。 代码 model.py from torch import nnclass Generator(nn.Module):def __init__(self, z_dim10, im_chan1, hidden_dim64):super(Generator, self).__init__()self.z_dim z_dim# Build the neural networkself.gen nn.Sequential(self.make_gen_block(z_dim, hidden_dim * 4),self.make_gen_block(hidden_dim * 4, hidden_dim * 2, kernel_size4, stride1),self.make_gen_block(hidden_dim * 2, hidden_dim),self.make_gen_block(hidden_dim, im_chan, kernel_size4, final_layerTrue),)def make_gen_block(self, input_channels, output_channels, kernel_size3, stride2, final_layerFalse):if not final_layer:return nn.Sequential(nn.ConvTranspose2d(input_channels, output_channels, kernel_sizekernel_size, stridestride),nn.BatchNorm2d(output_channels),nn.ReLU(inplaceTrue))else: # Final Layerreturn nn.Sequential(nn.ConvTranspose2d(input_channels, output_channels, kernel_size, stride),nn.Tanh())def unsqueeze_noise(self, noise):return noise.view(len(noise), self.z_dim, 1, 1) # [b,c,h,w]def forward(self, noise):x self.unsqueeze_noise(noise)return self.gen(x)class Discriminator(nn.Module):def __init__(self, im_chan1, hidden_dim16):super(Discriminator, self).__init__()self.disc nn.Sequential(self.make_disc_block(im_chan, hidden_dim),self.make_disc_block(hidden_dim, hidden_dim * 2),self.make_disc_block(hidden_dim * 2, 1, final_layerTrue),)def make_disc_block(self, input_channels, output_channels, kernel_size4, stride2, final_layerFalse):if not final_layer:return nn.Sequential(nn.Conv2d(input_channels, output_channels, kernel_size, stride),nn.BatchNorm2d(output_channels),nn.LeakyReLU(0.2, inplaceTrue))else: # Final Layerreturn nn.Sequential(nn.Conv2d(input_channels, output_channels, kernel_size, stride))def forward(self, image):disc_pred self.disc(image)return disc_pred.view(len(disc_pred), -1)train.py import torch from torch import nn from tqdm.auto import tqdm from torchvision import transforms from torchvision.datasets import MNIST from torchvision.utils import make_grid from torch.utils.data import DataLoader import matplotlib.pyplot as plt from model import * torch.manual_seed(0) # Set for testing purposes, please do not change!def show_tensor_images(image_tensor, num_images25, size(1, 28, 28)):image_tensor (image_tensor 1) / 2image_unflat image_tensor.detach().cpu()image_grid make_grid(image_unflat[:num_images], nrow5)plt.imshow(image_grid.permute(1, 2, 0).squeeze())plt.show()def get_noise(n_samples, z_dim, devicecpu):return torch.randn(n_samples, z_dim, devicedevice)criterion nn.BCEWithLogitsLoss() z_dim 64 display_step 500 batch_size 1280 # A learning rate of 0.0002 works well on DCGAN lr 0.0002beta_1 0.5 beta_2 0.999 device cuda# You can tranform the image values to be between -1 and 1 (the range of the tanh activation) transform transforms.Compose([transforms.ToTensor(),transforms.Normalize((0.5,), (0.5,)), ])dataloader DataLoader(MNIST(., downloadFalse, transformtransform),batch_sizebatch_size,shuffleTrue)gen Generator(z_dim).to(device) gen_opt torch.optim.Adam(gen.parameters(), lrlr, betas(beta_1, beta_2)) disc Discriminator().to(device) disc_opt torch.optim.Adam(disc.parameters(), lrlr, betas(beta_1, beta_2))def weights_init(m):if isinstance(m, nn.Conv2d) or isinstance(m, nn.ConvTranspose2d):torch.nn.init.normal_(m.weight, 0.0, 0.02)if isinstance(m, nn.BatchNorm2d):torch.nn.init.normal_(m.weight, 0.0, 0.02)torch.nn.init.constant_(m.bias, 0) gen gen.apply(weights_init) disc disc.apply(weights_init)n_epochs 500 cur_step 0 mean_generator_loss 0 mean_discriminator_loss 0 for epoch in range(n_epochs):# Dataloader returns the batchesfor real, _ in tqdm(dataloader):cur_batch_size len(real)real real.to(device)## Update discriminator ##disc_opt.zero_grad()fake_noise get_noise(cur_batch_size, z_dim, devicedevice)fake gen(fake_noise)disc_fake_pred disc(fake.detach())disc_fake_loss criterion(disc_fake_pred, torch.zeros_like(disc_fake_pred))disc_real_pred disc(real)disc_real_loss criterion(disc_real_pred, torch.ones_like(disc_real_pred))disc_loss (disc_fake_loss disc_real_loss) / 2# Keep track of the average discriminator lossmean_discriminator_loss disc_loss.item() / display_step# Update gradientsdisc_loss.backward(retain_graphTrue)# Update optimizerdisc_opt.step()## Update generator ##gen_opt.zero_grad()fake_noise_2 get_noise(cur_batch_size, z_dim, devicedevice)fake_2 gen(fake_noise_2)disc_fake_pred disc(fake_2)gen_loss criterion(disc_fake_pred, torch.ones_like(disc_fake_pred))gen_loss.backward()gen_opt.step()# Keep track of the average generator lossmean_generator_loss gen_loss.item() / display_step## Visualization code ##if cur_step % display_step 0 and cur_step 0:print(fStep {cur_step}: Generator loss: {mean_generator_loss}, discriminator loss: {mean_discriminator_loss})show_tensor_images(fake)show_tensor_images(real)mean_generator_loss 0mean_discriminator_loss 0cur_step 1每500个batch展示一次。 可以看到生成器的网络模型不再使用全连接使用反卷积操作扩大数据维度在输出层使用Tanh激活函数以控制输出范围而在其它层中均使用了ReLU激活函数在隐藏层中每层都使用BN来讲输出归到一定的范围内来稳定学习使得后层的隐藏单元不过分依赖本层的隐藏单元减弱内部协变量偏移从而加速对特征的学习。 因为不再使用全连接而是使用卷积所以输入的dimension变为channel所以输入之前先改变noise的shape为batch_sizechannelhighwidth。 判别器的网络模型使用卷积代替的全连接使用卷积操作减小数据维度隐藏层中每层在激活之前使用BN。 对生成器和鉴别器的权重进行初始化对于卷积层和转置卷积层也就是反卷积层使用正态分布来初始化权重均值为0标准差为0.02的原因是为了确保权重的初始值具有适当的大小并且不会过大或过小从而避免梯度消失或梯度爆炸的问题。 对于BN化层同样使用正态分布来初始化权重同时将偏置项初始化为0。这是因为批归一化层在训练中通过调整均值和方差来规范化输入数据因此初始的权重和偏置项都设置为较小的值有助于加速网络的收敛。 下一篇构建WGAN_GP。
http://www.hkea.cn/news/14414120/

相关文章:

  • 阿里云增加网站广告创意网站
  • 企业网站数据库设计表wordpress 多站点方法
  • 博州住房和城乡建设部网站电子商务管理系统
  • 长沙销售公司 网站重庆免费推广网站
  • 如何开网站需要多少钱荆门网站建设
  • 成都好的网站建设公司上海网站备案在哪里查询
  • 顺德营销型网站wordpress邮箱失败
  • 设计企业网站布局考虑的因素网站上线倒计时 模板
  • 贵阳网站优化微网站菜单
  • 一个网站需要多少容量永安网站制作
  • 网站群怎么做网站备案查询中心
  • 徐州手机网站制作展览会网站建设
  • 短视频网站开发教程在线制作电子签名
  • 企业网站建设程序重庆手机网站推广价格
  • 移动端网站建设的请示怎样建立自己的微信公众号
  • 建设教育网站内蒙古app下载
  • 林芝做网站做网站用的幻灯片大小
  • 重庆北京网站建设益阳 网站制作维护
  • 北京微信网站建设电话wordpress网站配置
  • 济南市建设招标中心网站seo深度优化公司
  • wordpress single模板网站seo外链接
  • 玫琳凯网站建设方案建个网站怎放上一张图
  • 网站后台jsp怎么做分页广州网络营销岗位数量
  • 网站设计首页网站上线流程分为
  • 网站建设方案书下载wordpress文章固定链接
  • 四大门户网站现状模板之家官网中文
  • 网页 制作网站网站开元棋牌怎么做app
  • 上传网站需要什么软件建官网个人网站
  • 中石油网页设计与网站建设网站显示iis7
  • 网站建设服务合约为什么博客需要wordpress