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

河南工程建设 协会网站域名网址查询

河南工程建设 协会网站,域名网址查询,wordpress用户发表文章,动漫做美食的视频网站文章目录 1. 准备数据1.1 配置超参数1.2 下载数据1.3 配置数据 2. 创建模型2.1 定义鉴别器2.2 定义生成器 3. 训练模型3.1 创建实例3.2 开始训练3.3 保存模型 4. 什么是GAN#xff08;对抗生成网络#xff09;? #x1f368; 本文为#x1f517;365天深度学习训练营 中的学… 文章目录 1. 准备数据1.1 配置超参数1.2 下载数据1.3 配置数据 2. 创建模型2.1 定义鉴别器2.2 定义生成器 3. 训练模型3.1 创建实例3.2 开始训练3.3 保存模型 4. 什么是GAN对抗生成网络? 本文为365天深度学习训练营 中的学习记录博客 原作者K同学啊 | 接辅导、项目定制 说明 1使用CPU时屏蔽.cuda()否则报错 1. 准备数据 系统环境 语言Python3.7.8 编译器VSCode 深度学习框架torch 1.13.1 1.1 配置超参数 print(***********1.1 配置超参数*****************) import argparse import os import numpy as np import torchvision.transforms as transforms from torchvision.utils import save_image from torchvision import datasets from torch.utils.data import DataLoader from torch.autograd import Variable import torch.nn as nn import torch ## 创建文件夹 # 程序在路径 D:\jupyter notebook\DL-100-days\下运行也就是下方的 ./ os.makedirs(./GAN/G1/images/, exist_okTrue) # 记录训练过程的图片效果 os.makedirs(./GAN/G1/save/, exist_okTrue) # 训练完成时模型的保存位置 os.makedirs(./GAN/G1/mnist/, exist_okTrue) # 下载数据集存放的位置 ## 超参数配置 n_epochs 50 batch_size 64 lr 0.0002 b1 0.5 b2 0.999 n_cpu 2 latent_dim 100 img_size 28 channels 1 sample_interval 500 #图像的尺寸1, 28, 28,和图像的像素面积784 img_shape (channels, img_size, img_size) img_area np.prod(img_shape) #设置cuda: (cuda:0) cuda True if torch.cuda.is_available() else False print(CUDA: , cuda) print(\n)文件路径如下图 使用CPU版本所以打印的CUDA结果为FALSE 1.2 下载数据 print(***********2. 下载数据*****************) mnist datasets.MNIST(root./datasets/, trainTrue, downloadTrue, transformtransforms.Compose([transforms.Resize(img_size), transforms.ToTensor(), transforms.Normalize([0.5], [0.5])]), ) print(\n)1.3 配置数据 print(***********1.3 配置数据*****************) dataloader DataLoader(mnist,batch_sizebatch_size,shuffleTrue ) print(\n)2. 创建模型 2.1 定义鉴别器 print(***********2. 创建模型********************) print(***********2.1 定义鉴别器*****************) class Discriminator(nn.Module):def __init__(self):super(Discriminator, self).__init__()self.model nn.Sequential(nn.Linear(img_area, 512),nn.LeakyReLU(0.2, inplaceTrue),nn.Linear(512, 256),nn.LeakyReLU(0.2, inplaceTrue),nn.Linear(256, 1),nn.Sigmoid(),)def forward(self, img):img_flat img.view(img.size(0), -1)validity self.model(img_flat)return validity print(\n)2.2 定义生成器 print(***********2.2 定义生成器*****************) class Generate(nn.Module):def __init__(self):super(Generate, self).__init__()def block(in_feat, out_feat, normalizeTrue):layers [nn.Linear(in_feat, out_feat)]if normalize:layers.append(nn.BatchNorm1d(out_feat, 0.8))layers.append(nn.LeakyReLU(0.2, inplaceTrue))return layersself.model nn.Sequential(*block(latent_dim, 128, normalizeFalse),*block(128, 256),*block(256, 512),*block(512, 1024),nn.Linear(1024, img_area),nn.Tanh())def forward(self, z):imgs self.model(z)imgs imgs.view(imgs.size(0), *img_shape)return imgs print(\n)3. 训练模型 3.1 创建实例 print(***********3. 训练模型*****************) print(***********3.1 创建实例****************) generator Generate() discriminator Discriminator()criterion torch.nn.BCELoss()optimizer_G torch.optim.Adam(generator.parameters(), lrlr, betas(b1, b2)) optimizer_D torch.optim.Adam(discriminator.parameters(), lrlr, betas(b1, b2))if torch.cuda.is_available():generator generator.cuda()discriminator discriminator#.cuda()criterion criterion.cuda() print(\n)3.2 开始训练 print(***********3.2 开始训练*****************) for epoch in range(n_epochs): # epoch:50for i, (imgs, _) in enumerate(dataloader):## 训练判别器## view(): 相当于numpy中的reshape重新定义矩阵的形状, 相当于reshape(128784) 原来是(128, 1, 28, 28)imgs imgs.view(imgs.size(0), -1) # 将图片展开为28*28784 imgs:(64, 784)real_img Variable(imgs).cuda() # 将tensor变成Variable放入计算图中tensor变成variable之后才能进行反向传播求梯度real_label Variable(torch.ones(imgs.size(0), 1))#.cuda() ## 定义真实的图片label为1fake_label Variable(torch.zeros(imgs.size(0), 1))#.cuda() ## 定义假的图片的label为0## ---------------------## Train Discriminator## 分为两部分1、真的图像判别为真2、假的图像判别为假## ---------------------## 计算真实图片的损失real_out discriminator(real_img) # 将真实图片放入判别器中loss_real_D criterion(real_out, real_label) # 得到真实图片的lossreal_scores real_out # 得到真实图片的判别值输出的值越接近1越好## 计算假的图片的损失## detach(): 从当前计算图中分离下来避免梯度传到G因为G不用更新z Variable(torch.randn(imgs.size(0), latent_dim))#.cuda() ## 随机生成一些噪声, 大小为(128, 100)fake_img generator(z).detach() ## 随机噪声放入生成网络中生成一张假的图片。fake_out discriminator(fake_img) ## 判别器判断假的图片loss_fake_D criterion(fake_out, fake_label) ## 得到假的图片的lossfake_scores fake_out ## 得到假图片的判别值对于判别器来说假图片的损失越接近0越好## 损失函数和优化loss_D loss_real_D loss_fake_D # 损失包括判真损失和判假损失optimizer_D.zero_grad() # 在反向传播之前先将梯度归0loss_D.backward() # 将误差反向传播optimizer_D.step() # 更新参数## -----------------## Train Generator## 原理目的是希望生成的假的图片被判别器判断为真的图片## 在此过程中将判别器固定将假的图片传入判别器的结果与真实的label对应## 反向传播更新的参数是生成网络里面的参数## 这样可以通过更新生成网络里面的参数来训练网络使得生成的图片让判别器以为是真的, 这样就达到了对抗的目的## -----------------z Variable(torch.randn(imgs.size(0), latent_dim))#.cuda() ## 得到随机噪声fake_img generator(z) ## 随机噪声输入到生成器中得到一副假的图片output discriminator(fake_img) ## 经过判别器得到的结果## 损失函数和优化loss_G criterion(output, real_label) ## 得到的假的图片与真实的图片的label的lossoptimizer_G.zero_grad() ## 梯度归0loss_G.backward() ## 进行反向传播optimizer_G.step() ## step()一般用在反向传播后面,用于更新生成网络的参数## 打印训练过程中的日志## item():取出单元素张量的元素值并返回该值保持原元素类型不变if (i 1) % 300 0:print([Epoch %d/%d] [Batch %d/%d] [D loss: %f] [G loss: %f] [D real: %f] [D fake: %f]% (epoch, n_epochs, i, len(dataloader), loss_D.item(), loss_G.item(), real_scores.data.mean(),fake_scores.data.mean()))## 保存训练过程中的图像batches_done epoch * len(dataloader) iif batches_done % sample_interval 0:save_image(fake_img.data[:25], ./GAN/G1/images/%d.png % batches_done, nrow5, normalizeTrue) print(\n)训练结果 ***********3.2 开始训练***************** [Epoch 0/50] [Batch 299/938] [D loss: 1.363185] [G loss: 1.811396] [D real: 0.922554] [D fake: 0.692913] [Epoch 0/50] [Batch 599/938] [D loss: 0.753042] [G loss: 2.229975] [D real: 0.815112] [D fake: 0.410212] [Epoch 0/50] [Batch 899/938] [D loss: 1.049122] [G loss: 1.940738] [D real: 0.789812] [D fake: 0.548839] ... ... ... [Epoch 48/50] [Batch 299/938] [D loss: 0.956054] [G loss: 1.398938] [D real: 0.661061] [D fake: 0.327662] [Epoch 48/50] [Batch 599/938] [D loss: 1.070262] [G loss: 0.950201] [D real: 0.538358] [D fake: 0.234096] [Epoch 48/50] [Batch 899/938] [D loss: 1.012980] [G loss: 1.247620] [D real: 0.650552] [D fake: 0.319423] [Epoch 49/50] [Batch 299/938] [D loss: 1.254801] [G loss: 1.048441] [D real: 0.522079] [D fake: 0.313869] [Epoch 49/50] [Batch 599/938] [D loss: 0.884523] [G loss: 1.709880] [D real: 0.767361] [D fake: 0.402201] [Epoch 49/50] [Batch 899/938] [D loss: 1.019181] [G loss: 1.608823] [D real: 0.739194] [D fake: 0.421154]./GAN/G1/images/下的缩略图如下 部分详细图如下 3.3 保存模型 print(***********3.3 保存模型*****************) torch.save(generator.state_dict(), ./GAN/G1/save/generator.pth) torch.save(discriminator.state_dict(). ./GAN/G1/save/discriminator.pth) print(\n)保存的模型文件如下 4. 什么是GAN对抗生成网络? 【详解1】 【详解2】 机器学习的模型大体分为两类判别模型Discriminative Model和生成模型Generative Model。 判别模型输入变量使用模型进行预测生成模型给出目标的隐含信息随机产生观测数据。比如给出一系列猫的图片来生成一张新的猫的图片。重要点在于“生成”二字。 GAN适用于无监督学习该网络的框架由至少两个模块构成即判别模型Discriminative Model和生成模型Generative Model通过二者的互相博弈学习来产生相当好的输出。
http://www.zqtcl.cn/news/354228/

相关文章:

  • 网站新闻怎么写最新事故案例100例
  • 网站中的表格seo宣传网站
  • 河南锦路路桥建设有限公司网站网站建设会考什么
  • 高校网站建设研究意义餐饮vi设计案例
  • 触屏手机网站网站建设功能模块价格
  • 类似携程网的网站wordpress文章摘要调用
  • 好网站建设公司开发方案联盟营销的网络营销方式
  • logo免费生成网站洛阳网络建站公司
  • 建设工程部网站百度指数功能
  • 个人网站 商业时事新闻2022最新10月
  • 不会代码 怎么做网站网站视频管理系统
  • 网站空间 流量网上卡片制作
  • 网站排名seo软件机关网站源码
  • 网站手机端页面怎么做手机之家
  • 成都电子商务网站大庆城市投资建设网站
  • 电子商务网站费用wordpress 怎么手动更新
  • 中国空间站设计在轨飞行多少年南昌网站建设风格
  • 用php写的网站有哪些暖暖 视频 在线 观看 高清
  • 云空间网站怎么做海南旅游网网页制作
  • 常宁网站免费的ai作图软件
  • 网站建设讲师招聘如何做电商产品推广
  • 让百度收录网站网站开发流程进度表
  • 有几个网站能在百度做推广产品开发管理系统
  • 一个网站项目的价格表dz论坛seo
  • 企业做网站要多少钱哪个网站做动图
  • 知名企业网站例子4s店网站模板
  • 网站建设的信息安全防范技术初级买题做哪个网站好
  • 品牌营销网站建设东莞智通人才招聘网
  • 莒县建设局网站好的网站具备什么条件
  • 威海网站建设怎么样网上怎么推销自己的产品