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

兴平做网站一键优化清理手机

兴平做网站,一键优化清理手机,做贸易的网站有哪些,网站建设公司名称文章目录 网络介绍生成器和判别器的博弈过程数据集可视化模型细节训练过程网络优缺点优点缺点 网络介绍 GAN通过设计生成模型和判别模型这两个模块,使其互相博弈学习产生了相当好的输出。 GAN模型的核心在于提出了通过对抗过程来估计生成模型这一全新框架。在这个…

文章目录

  • 网络介绍
  • 生成器和判别器的博弈过程
  • 数据集可视化
  • 模型细节
  • 训练过程
  • 网络优缺点
    • 优点
    • 缺点

网络介绍

GAN通过设计生成模型和判别模型这两个模块,使其互相博弈学习产生了相当好的输出。

GAN模型的核心在于提出了通过对抗过程来估计生成模型这一全新框架。在这个框架中,将会同时训练两个模型——捕捉数据分布的生成模型𝐺和估计样本是否来自训练数据的判别模型𝐷。

在训练过程中,生成器会不断尝试通过生成更好的假图像来骗过判别器,而判别器在这过程中也会逐步提升判别能力。这种博弈的平衡点是,当生成器生成的假图像和训练数据图像的分布完全一致时,判别器拥有50%的真假判断置信度。

生成器和判别器的博弈过程

  • 在训练刚开始的时候,生成器和判别器的质量都比较差,生成器会随机生成一个数据分布。
  • 判别器通过求取梯度和损失函数对网络进行优化,将靠近真实数据分布的数据判定为1,将靠近生成器生成出来数据分布的数据判定为0。
  • 生成器通过优化,生成出更加贴近真实数据分布的数据。
  • 生成器所生成的数据和真实数据达到相同的分布,此时判别器的输出为1/2。

过程如下图所示:
在这里插入图片描述
在上图中,蓝色虚线表示判别器,黑色虚线表示真实数据分布,绿色实线表示生成器生成的虚假数据分布,𝑧表示隐码,𝑥表示生成的虚假图像 𝐺(𝑧) 。

数据集可视化

import matplotlib.pyplot as pltdata_iter = next(mnist_ds.create_dict_iterator(output_numpy=True))
figure = plt.figure(figsize=(3, 3))
cols, rows = 5, 5
for idx in range(1, cols * rows + 1):image = data_iter['image'][idx]figure.add_subplot(rows, cols, idx)plt.axis("off")plt.imshow(image.squeeze(), cmap="gray")
plt.show()

在这里插入图片描述

模型细节

下面介绍本网络用到的生成器、判别器及损失函数和优化器:

  • 生成器 Generator 的功能是将隐码映射到数据空间。由于数据是图像,这一过程也会创建与真实图像大小相同的灰度图像(或 RGB 彩色图像)。在本案例演示中,该功能通过五层 Dense 全连接层来完成的,每层都与 BatchNorm1d 批归一化层和 ReLU 激活层配对,输出数据会经过 Tanh 函数,使其返回 [-1,1] 的数据范围内。注意实例化生成器之后需要修改参数的名称,不然静态图模式下会报错。
  • 判别器 Discriminator 是一个二分类网络模型,输出判定该图像为真实图的概率。主要通过一系列的 Dense 层和 LeakyReLU 层对其进行处理,最后通过 Sigmoid 激活函数,使其返回 [0, 1] 的数据范围内,得到最终概率。
  • 损失函数使用MindSpore中二进制交叉熵损失函数BCELoss ;
  • 这里生成器和判别器都是使用Adam优化器,但是需要构建两个不同名称的优化器,分别用于更新两个模型的参数,详情见下文代码。注意优化器的参数名称也需要修改。

训练过程

import os
import time
import matplotlib.pyplot as plt
import mindspore as ms
from mindspore import Tensor, save_checkpointtotal_epoch = 12  # 训练周期数
batch_size = 64  # 用于训练的训练集批量大小# 加载预训练模型的参数
pred_trained = False
pred_trained_g = './result/checkpoints/Generator99.ckpt'
pred_trained_d = './result/checkpoints/Discriminator99.ckpt'checkpoints_path = "./result/checkpoints"  # 结果保存路径
image_path = "./result/images"  # 测试结果保存路径
# 生成器计算损失过程
def generator_forward(test_noises):fake_data = net_g(test_noises)fake_out = net_d(fake_data)loss_g = adversarial_loss(fake_out, ops.ones_like(fake_out))return loss_g# 判别器计算损失过程
def discriminator_forward(real_data, test_noises):fake_data = net_g(test_noises)fake_out = net_d(fake_data)real_out = net_d(real_data)real_loss = adversarial_loss(real_out, ops.ones_like(real_out))fake_loss = adversarial_loss(fake_out, ops.zeros_like(fake_out))loss_d = real_loss + fake_lossreturn loss_d# 梯度方法
grad_g = ms.value_and_grad(generator_forward, None, net_g.trainable_params())
grad_d = ms.value_and_grad(discriminator_forward, None, net_d.trainable_params())def train_step(real_data, latent_code):# 计算判别器损失和梯度loss_d, grads_d = grad_d(real_data, latent_code)optimizer_d(grads_d)loss_g, grads_g = grad_g(latent_code)optimizer_g(grads_g)return loss_d, loss_g# 保存生成的test图像
def save_imgs(gen_imgs1, idx):for i3 in range(gen_imgs1.shape[0]):plt.subplot(5, 5, i3 + 1)plt.imshow(gen_imgs1[i3, 0, :, :] / 2 + 0.5, cmap="gray")plt.axis("off")plt.savefig(image_path + "/test_{}.png".format(idx))# 设置参数保存路径
os.makedirs(checkpoints_path, exist_ok=True)
# 设置中间过程生成图片保存路径
os.makedirs(image_path, exist_ok=True)net_g.set_train()
net_d.set_train()# 储存生成器和判别器loss
losses_g, losses_d = [], []for epoch in range(total_epoch):start = time.time()for (iter, data) in enumerate(mnist_ds):start1 = time.time()image, latent_code = dataimage = (image - 127.5) / 127.5  # [0, 255] -> [-1, 1]image = image.reshape(image.shape[0], 1, image.shape[1], image.shape[2])d_loss, g_loss = train_step(image, latent_code)end1 = time.time()if iter % 10 == 10:print(f"Epoch:[{int(epoch):>3d}/{int(total_epoch):>3d}], "f"step:[{int(iter):>4d}/{int(iter_size):>4d}], "f"loss_d:{d_loss.asnumpy():>4f} , "f"loss_g:{g_loss.asnumpy():>4f} , "f"time:{(end1 - start1):>3f}s, "f"lr:{lr:>6f}")end = time.time()print("time of epoch {} is {:.2f}s".format(epoch + 1, end - start))losses_d.append(d_loss.asnumpy())losses_g.append(g_loss.asnumpy())# 每个epoch结束后,使用生成器生成一组图片gen_imgs = net_g(test_noise)save_imgs(gen_imgs.asnumpy(), epoch)# 根据epoch保存模型权重文件if epoch % 1 == 0:save_checkpoint(net_g, checkpoints_path + "/Generator%d.ckpt" % (epoch))save_checkpoint(net_d, checkpoints_path + "/Discriminator%d.ckpt" % (epoch))

在这里插入图片描述

网络优缺点

优点

  • 生成数据自然:
    GAN通过生成器和判别器的对抗训练,生成的图像数据具有高度的自然性和逼真度。这种自然性使得GAN在图像生成、图像修复、图像超分辨率等领域具有广泛应用。
  • 训练效率高:
    GAN的创新之处在于其两个神经网络的对抗训练方式,这种训练方式简单易控,且能够显著改善生成式模型的训练效率。

缺点

  • 训练不稳定:
    GAN的训练过程可能不稳定,容易出现模式崩溃等问题。模式崩溃表现为生成器开始退化,总是生成同样的样本点,无法继续学习。这可能是由于生成器和判别器之间的对抗关系过于复杂,导致训练难以达到稳定的纳什均衡状态。
  • 计算资源需求高:
    GAN的训练过程需要大量的计算资源和时间。特别是对于大规模的数据集和高分辨率的图像,GAN的训练成本可能非常高昂。此外,GAN中的神经网络结构通常较为复杂,这也需要大量的存储空间来支持。

此章节学习到此结束,感谢昇思平台。

http://www.mnyf.cn/news/51804.html

相关文章:

  • 女鞋网站建设策划方案域名站长工具
  • 做外贸网站赚钱吗申请自媒体平台注册
  • 什么是做网站创建网站的流程
  • 如何百度搜到自己网站seo培训班 有用吗
  • 男学网站开发网站收录情况查询
  • dedecms做网站怎么查看php开源建站系统
  • 做图片能去哪些网站线下推广方法及策略
  • 黄做网站手机如何制作网页
  • 北海教网站建设服务之家网站推广
  • 网站建设与维护是什么内容?企业网址
  • 做公司的网站有哪些东西吗南通seo
  • 做网站给源码吗seo思维
  • h5做商城网站软件优化
  • 义乌兼职网站建设磁力在线搜索引擎
  • android系统app开发店铺seo是什么意思
  • 网站后台 登录界面模板 远吗百度投诉中心24人工
  • 帮助中心网站模板合肥网站优化软件
  • 华人汇和科技园建设有限公司网站谷歌外链代发
  • 陶瓷企业 瓷砖地板公司网站建设宝鸡网站seo
  • 网站banner怎么做的wap网站html5
  • 英文网站google推广营销型企业网站制作
  • wordpress 蜘蛛插件山东关键词优化联系电话
  • 西安建筑网站建设2022百度收录越来越难了
  • 宁波的网络公司比较有名的广告网站建设网站排名优化
  • 网站后台管理水印怎么做网络项目发布网
  • wordpress建站流量网络推广的方法
  • 美容网站制作沧州seo公司
  • 简单的公司网页制作青岛seo青岛黑八网络最强
  • 北仑网站网页建设百度热搜榜第一
  • 罗湖医院网站建设seo关键词优化最多可以添加几个词