wgan的实现的伪代码,和原理,dcgan,模型坍塌 em距离 js kl散

news2024/11/18 13:44:39

原文地址 

https://blog.csdn.net/Keep_Trying_Go/article/details/130471766

伪代码详细看这个, 

特别注意点:gan(x+nosize) 生成器 是 输入+噪声   ,而不是全部噪声生成的

特别注意点:gan(x+nosize) 生成器 是 输入+噪声   ,而不是全部噪声生成的

for epoch in range(NUM_EPOCHS):
    for batch_idx,(data,_) in enumerate(dataLoader):
        data = data.to(device)
        cur_batch_size = data.shape[0]
 
        #Train: Critic : max[critic(real)] - E[critic(fake)]
        loss_critic = 0
        for _ in range(CRITIC_ITERATIONS):
            noise = torch.randn(size = (cur_batch_size,Z_DIM,1,1),device=device)
            fake_img = gen(noise)
            #使用reshape主要是将最后的维度从[1,1,1,1]=>[1]
            critic_real = critic(data).reshape(-1)
            critic_fake = critic(fake_img).reshape(-1)
 
            loss_critic = (torch.mean(critic_real)- torch.mean(critic_fake))
            opt_critic.zero_grad()
            loss_critic.backward(retain_graph=True)
            opt_critic.step()
 
            #clip critic weight between -0.01 , 0.01
            for p in critic.parameters():
                p.data.clamp_(-WEIGHT_CLIP,WEIGHT_CLIP)
 
        #将维度从[1,1,1,1]=>[1]
        gen_fake = critic(fake_img).reshape(-1)
        #max E[critic(gen_fake)] <-> min -E[critic(gen_fake)]
        loss_gen = -torch.mean(gen_fake)
        opt_gen.zero_grad()
        loss_gen.backward()
        opt_gen.step()

WGAN主要解决的问题
引入了一种新的分布距离度量方法:Wasserstein距离,也称为(Earth-Mover Distance)简称EM距离,表示从一个分布变换到另一个分布的最小代价。
定义了一种称为Wasserstein GAN的GAN形式,该形式使EM距离的合理有效近似最小化,并且本文从理论上证明了相应的优化问题是合理的。
WGAN解决了GANs的主要训练问题。特别是,训练WGAN不需要维护在鉴别器和生成器的训练中保持谨慎的平衡,并且也不需要对网络架构进行仔细的设计。模式在GANs中典型的下降现象也显著减少。WGAN最引人注目的实际好处之一是能够通过训练鉴别器进行运算来连续地估计EM距离。绘制这些学习曲线不仅对调试和超参数搜索,但也与观察到的样品质量。

3.不同距离的度量方式
提示:下面的一些公式可能看起来很枯燥无味,但是如果读者可以坚持读完,将是不小的收获,而且下面给出的公式还是只是论文中推导公式的冰山一角。

(1)方式一


(2)方式二

(3)方式三

(4)方式四

原理

        DCGAN

DCGAN论文的作者提出了不使用Pooling层,多使用Batch Normalization层,不使用全连接层,生成网络中激活函数应使用ReLU,最后一层使用tanh激活函数,判别网络激活函数应使用LeakReLU等一系列经验性的训练技巧。

        但是上面的技巧仅仅能在一定程度上避免出现训练不稳定的现象,并没有从理论上解释为什么会出现训练困难以及如何解决训练不稳定的问题。
 

      模型崩塌     

 模型崩塌(Mode Collapse)是指模型生成的样本单一,多样性很差的现象。

        由于判别器只能鉴别单个样本是否为真实样本分布,并没有对多样性进行显式约束,导致生成模型可能倾向于生成真实分布的部分区间中的少量高质量样本,以此来在判别器中获得较高的概率值,而不会学习到全部的真实分布。

        模式崩塌在GAN的训练过程中比较常见。在训练过程中,通过可视化生成网络的样本,可以看到,生成的图片种类非常单一,生成网络总是倾向于生成某一种单一风格的样本图像

WGAN主要解决的问题


引入了一种新的分布距离度量方法:Wasserstein距离,也称为(Earth-Mover Distance)简称EM距离,表示从一个分布变换到另一个分布的最小代价。
定义了一种称为Wasserstein GAN的GAN形式,该形式使EM距离的合理有效近似最小化,并且本文从理论上证明了相应的优化问题是合理的。
WGAN解决了GANs的主要训练问题。特别是,训练WGAN不需要维护在鉴别器和生成器的训练中保持谨慎的平衡,并且也不需要对网络架构进行仔细的设计。模式在GANs中典型的下降现象也显著减少。WGAN最引人注目的实际好处之一是能够通过训练鉴别器进行运算来连续地估计EM距离。绘制这些学习曲线不仅对调试和超参数搜索,但也与观察到的样品质量。
————————————————

 
                        
原文链接:https://blog.csdn.net/Keep_Trying_Go/article/details/130471766

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2184184.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue3使用Teleport 控制台报警告:Invalid Teleport target on mount: null (object)

Failed to locate Teleport target with selector “.demon”. Note the target element must exist before the component is mounted - i.e. the target cannot be rendered by the component itself, and ideally should be outside of the entire Vue component tree main.…

基于SSM+小程序的选课管理系统2(源码+sql脚本+视频导入教程+文档)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 ​ 教师的账号和密码可以注册&#xff0c;管理员的账号和密码可由系统开发者在数据库中设置&#xff0c;学生的账号和密码可以由注册获得。 1、管理员的主要功能为学生资料、教师资料的添…

如何升级OCAT

如何升级OCAT 一. 从官网下载OCAT 官网下载地址链接&#xff1a;https://github.com/ic005k/OCAuxiliaryTools/releases 目前下载下来版本为0.8.8&#xff0c;但RapidEFI显示最新版本已经为1.0.1。 为了防止OC版本过低导致进不了系统&#xff0c;需要对OCAT进行升级。![在这里…

.NET 一款支持冰蝎的免杀WebShell

01阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等&#xff08;包括但不限于&#xff09;进行检测或维护参考&#xff0c;未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失&#xf…

探索 PixiJS:强大的 2D 图形渲染库

探索 PixiJS&#xff1a;强大的 2D 图形渲染库 演示地址 演示地址 源码地址 源码地址 获取更多 获取更多 随着 Web 技术的发展&#xff0c;越来越多的开发者希望在网页中实现丰富的视觉效果和动画。PixiJS 作为一个高性能的 2D 渲染库&#xff0c;凭借其强大的功能和易用性…

《NoSQL》非关系型数据库MongoDB 学习笔记!

Mongo基础&#xff1a; 使用数据库&#xff1a; 使用use 命令 后面跟着要使用的数据库名字即可&#xff0c; 例如&#xff1a;use cities, 值得注意的是&#xff0c; mongo中不像mysql&#xff0c; 还需要先创建数据库&#xff0c;后访问&#xff0c; mongo中&#xff0c;你无…

媒介坊:在数字化时代,企业如何在竞争激烈的市场中脱颖而出

在当今的数字化时代&#xff0c;企业如何在竞争激烈的市场中脱颖而出&#xff0c;成为消费者关注的焦点&#xff1f;软文投放作为一种高效的营销手段&#xff0c;正受到越来越多企业的青睐。而媒介坊&#xff0c;作为一站式软文投放平台&#xff0c;正是帮助企业实现这一目标的…

Android Camera2 与 Camera API技术探究和RAW数据采集

Android Camera2 Android Camera2 是 Android 系统中用于相机操作的一套高级应用程序接口&#xff08;API&#xff09;&#xff0c;它取代了之前的 Camera API。以下是关于 Android Camera2 的一些主要信息&#xff1a; 主要特点&#xff1a; 强大的控制能力&#xff1a;提供…

JavaWeb——Vue组件库Element(4/6):案例:基本页面布局(基本框架、页面布局、CSS样式、完善布局、效果展示,含完整代码)

目录 步骤 基本页面布局 基本框架 页面布局 CSS样式 完善布局 效果展示 完整代码 Element 的基本使用方式以及常见的组件已经了解完了&#xff0c;接下来要完成一个案例&#xff0c;通过这个案例让大家知道如何基于 Element 中的各个组件制作一个完整的页面。 案例&am…

Labview helper

IMAQ Advanced Setup Learn Geometric Pattern 2 VI 参数说明Curve Extraction Mode (0)指定VI如何识别图像中的曲线。如果您希望VI不对图像中对象的均匀性或图像背景做出任何假设&#xff0c;请将此选项设置为正常。如果您希望VI假定图像中的对象或图像背景由均匀的像素值组成…

PCL 最远点采样(FPS)

目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.1.1 可视化函数 2.1.2 最远点采样 2.2完整代码 三、实现效果 PCL点云算法汇总及实战案例汇总的目录地址链接&#xff1a; PCL点云算法与项目实战案例汇总&#xff08;长期更新&#xff0…

事务原理,以及MVCC如何实现RC,RR隔离级别的

事务原理 redo log 保持持久性&#xff1a; 首先原来的情况是我们做一组操作的时候&#xff0c;先去操作bufferpool缓冲区&#xff0c;如果没有&#xff0c;那么后台线程将数据页换入换出到缓冲区&#xff0c;然后我们对这个buffer pool进行修改&#xff0c;为脏页&#xff0c…

Redis篇(Redis原理 - 数据结构)(持续更新迭代)

目录 一、动态字符串 二、intset 三、Dict 1. 简介 2. Dict的扩容 3. Dict的rehash 4. 知识小结 四、ZipList 1. 简介 2. ZipListEntry 3. Encoding编码 五、ZipList的连锁更新问题 六、QuickList 七、SkipList 八、RedisObject 1. 什么是 redisObject 2. Redi…

开放式耳机哪个品牌好?2024年蓝牙耳机排行榜

开放式蓝牙耳机以其独树一帜的佩戴方式&#xff0c;正逐渐成为音乐爱好者和运动达人的新宠。时尚而又实用。如果你对传统耳机的佩戴方式感到厌倦&#xff0c;或者在寻找一款既能提供高品质音乐体验又能兼顾佩戴舒适性的耳机&#xff0c;那么开放式蓝牙耳机可能会是你的理想选择…

Vue3轻松实现前端打印功能

文章目录 1.前言2.安装配置2.1 下载安装2.2 main.js 全局配置3.综合案例3.1 设置打印区域3.2 绑定打印事件3.3 完整代码4.避坑4.1 打印表格无边框4.2 单选框复选框打印不选中4.3 去除页脚页眉4.4 打印內容不自动换行1.前言 vue3 前端打印功能主要通过插件来实现。 市面上常用的…

【CKA】八、扩容Deployment

8、扩容Deployment 1. 考题内容&#xff1a; 2. 答题思路&#xff1a; 直接使用命令扩容就行 我考的题只是把 loadbalancer 名字换了 &#xff0c;其他都一模一样 3. 官网地址&#xff1a; https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/deployment/ …

Golang | Leetcode Golang题解之第451题根据字符出现频率排序

题目&#xff1a; 题解&#xff1a; func frequencySort(s string) string {cnt : map[byte]int{}maxFreq : 0for i : range s {cnt[s[i]]maxFreq max(maxFreq, cnt[s[i]])}buckets : make([][]byte, maxFreq1)for ch, c : range cnt {buckets[c] append(buckets[c], ch)}an…

【AI大模型】深入Transformer架构:编码器部分的实现与解析(上)

目录 &#x1f354; 编码器介绍 &#x1f354; 掩码张量 2.1 掩码张量介绍 2.2 掩码张量的作用 2.3 生成掩码张量的代码分析 2.4 掩码张量的可视化 2.5 掩码张量总结 &#x1f354; 注意力机制 3.1 注意力计算规则的代码分析 3.2 带有mask的输入参数&#xff1a; 3.…

华为开源自研AI框架昇思MindSpore应用案例:计算高效的卷积模型ShuffleNet

如果你对MindSpore感兴趣&#xff0c;可以关注昇思MindSpore社区 ShuffleNet ShuffleNet网络介绍 ShuffleNetV1是旷视科技提出的一种计算高效的CNN模型&#xff0c;和MobileNet, SqueezeNet等一样主要应用在移动端&#xff0c;所以模型的设计目标就是利用有限的计算资源来达到…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《基于节点碳势响应的新型电力系统鲁棒优化调度 》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…