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

建设集团网站网页优化怎么做

建设集团网站,网页优化怎么做,哪个网站可以做签证,在附近找工作获取pdf:密码7281 文章目录一:数据集介绍二:GAN简介(1)简介(2)损失函数三:代码编写(1)参数及数据预处理(2)生成器与判别器模型&#x…
  • 获取pdf:密码7281

文章目录

  • 一:数据集介绍
  • 二:GAN简介
    • (1)简介
    • (2)损失函数
  • 三:代码编写
    • (1)参数及数据预处理
    • (2)生成器与判别器模型
    • (3)优化器和损失函数
    • (4)训练
  • 三:效果查看
    • (1)tensorboard
    • (2)生成图片效果

一:数据集介绍

MNIST数据集:MNIST是个手写数字图片集,每张图片都做了归一化处理,大小是28x28,并且是灰度图像,所以每张图像格式为1x28x28

  • 数据集下载地址

包括如下四个文件

在这里插入图片描述

含义如下

类别文件名描述
训练集图片train-images-idx3-ubyte.gz(9.9M)包含60000个样本
训练集标签train-labels-idx1-ubyte.gz(29KB)包含60000个标签
测试集图片t10k-images-idx3-ubyte.gz(1.6M)包含10000个样本
测试集标签t10k-labels-idx1-ubyte.gz(5KB)包含10000个样本

当然torchvision.datasets中也内置了这个数据集,可以通过如下代码从网络上下载

train_data = dataset.MNIST(root='./mnist/',train=True,transform=transforms.ToTensor(),download=True)
test_data = dataset.MNIST(root='./mnist/',train=False,transform=transforms.ToTensor(),download=False)
  • root:表示数据集待存放的目录
  • train:如果为true将会使用训练集的数据集(training.pt),如果为false将会使用测试集数据集(test.pt
  • download:如果为true将会从网络上下载并放入root中,如果数据集已下载则不会再次下载
  • transform:接受PIL图片并返回转换后的图片,常用的就是转换为tensor(这里便会调用torchvision.transform

数据集加载成功后,文件布局如下

在这里插入图片描述

二:GAN简介

(1)简介

GAN(Generative Adversial Nets,生成式对抗网络):这是一种深度学习模型,是近年来复杂分布上无监督学习最具前景的方法之一。模型有两个模型:生成模型(Generative Model)辨别模型(Discriminative Model)的互相博弈学习产生相当好的输出。实际使用时一般会选择DNN作为G和D

如下图,以论文中所述的制作假钞的例子为例进行说明

  • 生成模型G的目的是尽量能够生成足以以假乱真的假钞去欺骗判别模型D,让它以为这是真钞
  • 判别模型D的目的是尽量能够鉴别出生成模型G生成的假钞是假的

在这里插入图片描述

(2)损失函数

GAN损失函数如下
在这里插入图片描述

其中参数含义如下

  • xxx:真实的数据样本
  • zzz:噪声,从随机分布采集的样本
  • GGG:生成模型
  • DDD:判别模型
  • G(z)G(z)G(z):输入噪声生成一条样本
  • D(x)D(x)D(x):判别真实样本是否来自真实数据(如果是则为1,如果不是则为0)
  • D(G(z))D(G(z))D(G(z)):判别生成样本是否来自真实数据(如果是则为1,如果不是则为0)

该损失函数整体分为两个部分

第一部分:给定GGG找到使VVV最大化的DDD,因为使VVV最大化的DDD会使判别器效果最好

  • 对于①:判别器的输入为真实数据xxxEx∼pdata[logD(x)]E_{x}\sim p_{data}[logD(x)]Expdata[logD(x)]值越大表示判别器认为输入xxx为真实数据的概率越大,也即表示判别器的能力越强,所以这一项输出越大对判别器越有利
  • 对于②:判别器的输入伪造数据G(z)G(z)G(z),此时D(G(z))D(G(z))D(G(z))越小那么就表示判别器将此伪造数据鉴别为真实数据的概率也越小,也即表示判别器的能力越强。注意此时第二项是log(1−D(G(z)))log(1-D(G(z)))log(1D(G(z)))的期望Ex∼pdata[log(1−D(G(z)))]E_{x}\sim p_{data}[log(1-D(G(z)))]Expdata[log(1D(G(z)))]。所以当判别器能力越强时,D(G(z))D(G(z))D(G(z))越小同时Ex∼pdata[log(1−D(G(z)))]E_{x}\sim p_{data}[log(1-D(G(z)))]Expdata[log(1D(G(z)))]也就越大

在这里插入图片描述

第二部分:给定DDD找到使VVV最小化的GGG,因为使VVV最小化的GGG会使生成器效果最好

  • 对于①:由于固定了DDD,而这一部分只和DDD有关,因此这一部分是常量,所以可以舍去
  • 对于②:判别器的输入伪造数据G(z)G(z)G(z),与上面不同的是,我们期望生成器的效果要好,尽可能骗过辨别器,所以D(G(z))D(G(z))D(G(z))要尽可能大(D(G(z))D(G(z))D(G(z))越大表示辨别器鉴定此数据为真实数据的概率越大),Ex∼pdata[log(1−D(G(z)))]E_{x}\sim p_{data}[log(1-D(G(z)))]Expdata[log(1D(G(z)))]也就越小

三:代码编写

(1)参数及数据预处理

# 设备
device = 'cuda' if torch.cuda.is_available() else 'cpu'
if device == 'cuda':print("GPU上运行")
else:print("CPU上运行")
# 图片格式
img_size = [1, 28, 28]# batchsize
batchsize = 64# latent_dim
latent_dim = 100# 数据集及变化
data_transforms = transforms.Compose([transforms.Resize(28),transforms.ToTensor(),transforms.Normalize([0.5], [0.5])]
)
dataset = torchvision.datasets.MNIST(root='~/autodl-tmp/dataset', train=True, download=False, transform=data_transforms)

(2)生成器与判别器模型

# 生成器模型
"""
根据输入生成图像
"""class Generator(nn.Module):def __init__(self):super(Generator, self).__init__()def block(in_feat, out_feat, normalize=True):layers = [nn.Linear(in_feat, out_feat)]if normalize:layers.append(nn.BatchNorm1d(out_feat, 0.8))layers.append(nn.LeakyReLU(0.2, inplace=True))return layersself.model = nn.Sequential(*block(latent_dim, 128, normalize=False),*block(128, 256),*block(256, 512),*block(512, 1024),nn.Linear(1024, np.prod(img_size, dtype=np.int32)),nn.Tanh())def forward(self, x):# [batchsize, latent_dim]output = self.model(x)image = output.reshape(x.shape[0], *img_size)return image# 判别器模型
"""
判别图像真假
"""
class Discriminator(nn.Module):def __init__(self):super(Discriminator, self).__init__()self.model = nn.Sequential(nn.Linear( np.prod(img_size, dtype=np.int32), 512),nn.ReLU(inplace=True),nn.Linear(512, 256),nn.ReLU(inplace=True),nn.Linear(256, 128),nn.ReLU(inplace=True),nn.Linear(128, 1),nn.ReLU(inplace=True),nn.Sigmoid(),)def forward(self, x):# [batch_size, 1, 28, 28]x = x.reshape(x.shape[0], -1)output = self.model(x)return output

(3)优化器和损失函数

# 优化器和损失函数
generator = Generator()
generator = generator.to(device)
discriminator = Discriminator()
discriminator = discriminator.to(device)g_optimizer = torch.optim.Adam(generator.parameters(), lr=0.0001)
d_optimizer = torch.optim.Adam(discriminator.parameters(), lr=0.0001)
loss_func = nn.BCELoss()

(4)训练

def train():step = 0dataloader = DataLoader(dataset=dataset, batch_size=batchsize, shuffle=True, drop_last=True, num_workers=8)for epoch in range(1, 100):print("-----------当前epoch:{}-----------".format(epoch))for i, batch in enumerate(dataloader):print("-----------当前batch:{}/{}-----------".format(i, (len(dataloader))))# 拿到真实图片X, _ = batchX = X.to(device)# 采用标准正态分布得到的batchsize × latent_dim的向量z = torch.randn(batchsize, latent_dim)z = z.to(device)# 送入生成器生成假图片pred_X = generator(z)g_optimizer.zero_grad()"""生成器损失:让生成的图像与通过辨别器与torch.ones(batchsize, 1)越接近越好"""g_loss = loss_func(discriminator(pred_X), torch.ones(batchsize, 1).to(device))g_loss.backward()g_optimizer.step()d_optimizer.zero_grad()"""辨别器损失:一方面让真实图片通过辨别器与torch.ones(batchsize, 1)越接近越好另一方面让生成图片通过辨别器与torch.zeros(batchsize, 0)越接近越好"""d_loss = 0.5 * (loss_func(discriminator(X), torch.ones(batchsize, 1).to(device)) + loss_func(discriminator(pred_X.detach()), torch.zeros(batchsize, 1).to(device)))d_loss.backward()d_optimizer.step()print("生成器损失{}".format(g_loss), "辨别器损失{}".format(d_loss))logger.add_scalar('g_loss', g_loss, step)logger.add_scalar('d_loss', d_loss, step)step = step+1if step % 1000 == 0:save_image(pred_X.data[:25], "./image_save/image_{}.png".format(step), nrow=5)

三:效果查看

(1)tensorboard

在这里插入图片描述

(2)生成图片效果

每1000个step保存一次照片,最后生成了92张图片,每张图片由每个batch的前25张图片构成

在这里插入图片描述


1000-step
在这里插入图片描述

5000-step
在这里插入图片描述

10000-step
在这里插入图片描述

20000-step
在这里插入图片描述

30000-step
在这里插入图片描述

50000-step
在这里插入图片描述

70000-step

在这里插入图片描述

80000-step

在这里插入图片描述

90000-step
在这里插入图片描述

920000-step(final)
在这里插入图片描述

http://www.hyszgw.com/news/41834.html

相关文章:

  • 建站系统做的网站百度可以搜索到吗创新的赣州网站建设
  • 本地网站制作杭州网站建设朗诵面朝
  • 知名网站规划邢台移动网站建设报价
  • 做维修家具广告在哪个网站好怎样做吧网站排名做上去
  • 驻马店网站制作网站设计大小
  • 响应式网站开发原则长沙网站优化推广
  • asp.net 3.5网站开发全程解析 海宁网站制作
  • 上海网站建设招标阿里云 网站根目录
  • 百度指数峰值查询seo怎么做关键词排名
  • 用python做美食网站做电商设计在哪个网站接单
  • 微网站建设云帆网络免费傻瓜室内装修设计软件
  • 上海网站建设营销上海企业信用信息公示系统查询入口
  • 网站后台登陆密码合肥网站建设政务区
  • 网页设计大设计师wordpress 优化seo
  • 上海网校排名郑州网站优化培训
  • 推广网站的作用做网站的怎样找客户
  • 天津手机网站建设制作医疗网站建设目录
  • 有没有做吉祥物的网站地方汽车网站模板购买
  • 新网站推广方法wordpress邮箱插件
  • 海口企业自助建站温州知名网站推广
  • 灯具做外贸的网站有哪些旅游网站建设设计公司
  • 网站服务器租用和托管网站建设产品分类
  • 玛多县网站建设公司Wordpress微博样式
  • 成都网站建设思乐科技大连网站推广招聘
  • 一个页面多少钱怎么优化标题和关键词排名
  • 自己房子怎么挂网站做民宿阿里云apache重写wordpress
  • 网站如何做se可以做数学题的网站
  • 怎么用wordpress建电商网站吗wordpress外链音乐
  • 创建免费网站网站建设的技术手段
  • 网站建设一般要素安卓app安装