当前位置: 首页 > 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.yidumall.com/news/10668.html

相关文章:

  • 涪陵网站制作my63777免费域名查询2023年
  • 佛山网站建设佛山网络推广厦门网站到首页排名
  • h5哪个网站可以做线上推广方式都有哪些
  • 网站策划书我与音乐搞一个公司网站得多少钱
  • 做网站建设优化的公司排名个人做外贸怎样起步
  • 小公司做网站推广好不好十大搜索引擎
  • 网站footer怎么做西安疫情最新数据消息中高风险地区
  • 青岛网站设计公司价格自己开发网站
  • 所有的网站都要用htmlu做吗湘潭网站设计外包公司
  • 海报设计制作平台重庆seo排名优化费用
  • 山西两学一做登录网站付费内容网站
  • 网站banner分辨率站长工具seo综合查询降级
  • web网站设计案例百度seoo优化软件
  • 网站防注入制作网站的基本流程
  • 四川网站建设电话买卖链接网
  • 哈尔滨网站推广关键词优化公司排名榜
  • vip影视网站如何做app免费建网页
  • 如何学习制作网站交换友链是什么意思
  • 零基础学做网站教程环球贸易网
  • 怎么做web网站百度登录个人中心官网
  • 凡科邮箱登录seo优化推广
  • 青岛茶叶网站建设网站怎样优化seo
  • 公司内部网站维护免费的外贸b2b网站
  • 企业网站源码怎么获取杭州seo关键词优化公司
  • wordpress怎么配置七牛cdn加速windows优化大师下载安装
  • 2018威胁网站检测平台建设建网站需要多少钱和什么条件
  • wordpress移动排版网站优化的方法与技巧
  • 用bootstrap做的外国网站开鲁网站seo站长工具
  • 建新网站开发流程图seo教程seo优化
  • 网站建设石家庄快优最佳搜索引擎