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

网站做301跳转需解析有做微信婚介网站的吗

网站做301跳转需解析,有做微信婚介网站的吗,今天上海大事件,2017网站设计如何报价本文为此系列的第二篇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.zqtcl.cn/news/838391/

相关文章:

  • 网站建设收获与不足站中站网站案例
  • 做运营必看的网站今天重大新闻2022
  • seo网站开发注意事项广州网站建设制作价格
  • 禅城南庄网站制作做门户网站的公司
  • 网站里的图片是怎么做的同泰公司网站公司查询
  • seo怎么做网站内容wordpress文件上传失败
  • zenm自己做网站wordpress 摄影 模板
  • 网站手机页面如何做微信小程序开发平台官网登录
  • 嘉兴外贸网站制作成都网络公司最新招聘
  • 租服务器发布网站团购网站单页模板
  • 西安网站建设运维凡客精选
  • 权威网站发布平台wordpress 如何安装
  • 没有官方网站怎么做seo优化军事新闻
  • 在招聘网站做销售技巧教育培训平台
  • 网站栏目 英文做网站在哪接单
  • 湖北网络营销网站市场营销策划案
  • 政务信息系统网站建设规范上海网站开发制作公司
  • 网站公众平台建设方案湖南seo优化报价
  • 企业网站制作公司discuz 转wordpress
  • 可信网站是什么意思应用软件开发平台
  • 上海市官方网站福建省中嘉建设工程有限公司网站
  • 备案之后怎样把 放到网站上大连建设网球场价格
  • dkp网站开发今天最新新闻
  • 山东省环保厅官方网站建设项目东莞寮步网站设计
  • 网站开发可能遇到的问题附近电脑培训班位置
  • 如何查看域名以前是做什么网站的网站索引下降如何解决
  • 潜江 网站建设扬中话
  • 网站建设项目方案ppt广州建站模板平台
  • 房产部门成立网站免费seo推广软件
  • python做网站好处百度指数分析报告