机器学习笔记—6(李宏毅版)

GAN,生成式对抗网络
Video Prediction
Previous frames – Network --> Frames
让 Network 的输出不是单一的、固定的,而是有几率的分布输出。
当同一个输入,有多种不同可能性的正确输出时,就需要 distribution。
比如输出一个带翅膀的动物,那么就有多种结果,而很多种结果都是正确的。
再比如输出辉夜是谁,可以输出秀知学院的四宫辉夜,也可以输出忍者世界的大筒木辉夜。

Unconditional generation
Normal Distribution --Generator–> Complex Distribution 产生图片
image -->Discriminator 用来表示图片的真实程度。
Generator 不断进化,产生的图片越来越接近真实,对应的 Discriminator 也不断进化,对产生的图片的判断真实性的条件越来越严格
两者相互对立统一,竞争合作关系。
第一步:一堆随机的参数进入Generator产生图片,将产生的图片和真正的图片丢入Discriminator进行对比,产生结果的优秀程度,训练Discriminator。
第二部:训练Generator,让Generator产生的图片可以在Discriminator中获得一个尽量好的结果。相当于让Discriminator的结果反作用于Generator,让Discriminator的结果越小越好。
第三步:反复执行第一步和第二步,训练Discriminator和Generator。
用GAN可以产生人脸,并且是可以产生现实生活中不存在的人脸。并且可以通过调整参数,获得不同角度的同一张人脸。
通过Generator产生的结果,应当和真实的结果越接近越好,判断两者的接近程度是通过计算divergence,这是一个概率问题而不是数值问题。产生各个结果的概率应当和真实的各个概率相接近。
Discriminator的具体操作为,有一堆数据,是从真实数据中产生的或者Generator中产生的,Discriminator看到一张真实图片就加分,看到一张生成图片就减分,即说明真实图片要尽量多,生成图片要尽量少。
G*=arg min max V(G,D)

GAN的训练技巧
首先,真实值和生成值都类似于二维空间中的直线,实际分布在非常小的空间内,重合部分非常少。
其次,从真实值和生成值中如果sample的点不够多的话,可能导致重叠的点比较少。
使用JS divergence,可能出现一种情况,即使训练的结果在变好,但是判断不出来,Loss不产生变化。
Wasserstein distance
P、Q是两个distribution,相当于两个土堆,而两个之间的差距,相当于将P重塑成Q的形状的过程中需要移动的总距离。优于JS divergence。

Generator和Discriminator之间是相互进步的关系,当某一方出现一次问题,整个训练过程也会出现问题。
用GAN生成文字是最困难的部分,Training language GANs from Scratch

Quality,对生成的图片进行影像辨识,辨识出的结果分布应当是相对比较集中的,如果结果的分布比较分散,说明生成的图片效果不好。
Mode Collapse,生成的多张图片各个方面都很相似,并不是一个好的Genenrator
Mode Dropping,与上一个问题类似,不过略好,生成的图片有几个方面很相似,比如生成的人脸都是白皮肤或者总皮肤,也不是一个好的Generator
Diversity,如果放入不同的vector,生成的结果都集中在某个class,那么说明多样性可能不够。
Quality是对一张图片的生成结果进行判断,结果应当比较集中。而Diversity是对多张不同图片的生成结果进行判断,结果应当比较分散。

FID,一种比较常用的判断生成图片结果的方法

训练出来的生成图片应当与真实图片不完全一样,如果生成图片和真实图片完全一致,则说明结果并不好,GAN的Evolution十分困难,评估方式也很复杂。

Conditional Generation,Unconditional的生成,输入的结果是一个distribution,而有条件的Genenrator需要多输入参数,表示对生成的图片添加一些条件限制,如黑头发、黑眼睛,至于如何将限制条件表示为参数,可以通过辨识识别来产生vector。
不仅需要对Generator进行修正,也需要对Discriminator进行修正,Discriminator的输入参数需要有图片和文字描述的限制条件,需要同时判断是否是真实图片以及是否满足文字描述,可以对输入的vector增加适当数量的参数维度。
可以运用于图像处理,image to image,输入图片,输入限制条件,输出另一张图片,就有了图像处理的效果,比如Photoshop中的各种滤镜。
使用GAN+supervise learning可以产生一个比较好的结果。
输入声音输出图片,通过截取电影、电视剧片段可以收集到需要的数据。

Unsupervise Learning
Learning from Unpaired Data
例如,影像风格转换,将真人照片转为二次元照片,使用GAN的做法还不够,要强化输入的真人图片和输出的二次元图片的关系,Cycle GAN,先将真人图片A转换为二次元图片,再将二次元图片转换为真人图片B,两张图片A、B应该越接近越好,有三个network,第一个A——二次元,第二个二次元——B,第三个判断中间图片是否是二次元图片,这样输出的二次元图片和输入的真人图片一定是有关系的。实际上即使没有二次元——真人B这一步,一般问题也不会太大,因为机器学习比较懒惰,会想要输出一张和真人A相接近的二次元图片。
StarGAN,可以在多种风格之间做影像风格转换。
也可以用作Seq2Seq文字风格转换

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ava实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),可运行高分资源 Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现
C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。下面详细介绍C语言的基本概念和语法。 1. 变量和数据类型 在C语言中,变量用于存储数据,数据类型用于定义变量的类型和范围。C语言支持多种数据类型,包括基本数据类型(如int、float、char等)和复合数据类型(如结构体、联合等)。 2. 运算符 C语言中常用的运算符包括算术运算符(如+、、、/等)、关系运算符(如==、!=、、=、<、<=等)、逻辑运算符(如&&、||、!等)。此外,还有位运算符(如&、|、^等)和指针运算符(如、等)。 3. 控制结构 C语言中常用的控制结构包括if语句、循环语句(如for、while等)和switch语句。通过这些控制结构,可以实现程序的分支、循环和多路选择等功能。 4. 函数 函数是C语言中用于封装代码的单元,可以实现代码的复用和模块化。C语言中定义函数使用关键字“void”或返回值类型(如int、float等),并通过“{”和“}”括起来的代码块来实现函数的功能。 5. 指针 指针是C语言中用于存储变量地址的变量。通过指针,可以实现对内存的间接访问和修改。C语言中定义指针使用星号()符号,指向数组、字符串和结构体等数据结构时,还需要注意数组名和字符串常量的特殊性质。 6. 数组和字符串 数组是C语言中用于存储同类型数据的结构,可以通过索引访问和修改数组中的元素。字符串是C语言中用于存储文本数据的特殊类型,通常以字符串常量的形式出现,用双引号("...")括起来,末尾自动添加'\0'字符。 7. 结构体和联合 结构体和联合是C语言中用于存储不同类型数据的复合数据类型。结构体由多个成员组成,每个成员可以是不同的数据类型;联合由多个变量组成,它们共用同一块内存空间。通过结构体和联合,可以实现数据的封装和抽象。 8. 文件操作 C语言中通过文件操作函数(如fopen、fclose、fread、fwrite等)实现对文件的读写操作。文件操作函数通常返回文件指针,用于表示打开的文件。通过文件指针,可以进行文件的定位、读写等操作。 总之,C语言是一种功能强大、灵活高效的编程语言,广泛应用于各种领域。掌握C语言的基本语法和数据结构,可以为编程学习和实践打下坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值