一、问题总结
1、理论方面,概率学的不好,很多分布都不知道说的是啥
2、代码方面,不够熟练,一些函数怎么调用只能看懂,不能靠自己从零手打出来
二、代码学习
1.GAN
batch_size = 50的训练效果一言难尽

改到250以后

舒服多了
生成更多的样本观察一下
3.CGAN和DCGAN
训练时候代码有个地方报错,是维度不匹配问题。修改代码:
real_loss = bce(discriminator(real_images, real_labels).squeeze(-1), ones)fake_loss = bce(discriminator(fake_images.detach(), c).squeeze(-1), zeros)
CGAN
epoch = 200时
训练发现,超过100后开始训不下去了
看一下效果图
拉跨(之前训30个epoch的时候也是这个效果)
CGAN是把图像直接拉成一个向量来处理,没有考虑空间上的特性,因此,效果理论上会不如使用卷积操作的 DCGAN。
DCGAN(epoch=30)
效果图
当epoch增加到100时
(WTF?)
三、视频学习
1.简介
(1)背景
(2)示例
图像着色(旧图像修复)、图像超像素(手机相机)、背景模糊、人脸生成人脸定制(娱乐软件)、卡通头像生成、文本生成图片、字体变换、风格变换、图像修复、帧预测
2.基础
(1)GAN
D判别器:区分真实样本和虚假样本(核心)
G生成器:欺骗判别器(核心)
z随机噪声
x真实样本
KL散度:一种衡量两个概率分布的匹配程度的指标
性质:
当且P1=P2,KL散度为零
KL散度具有非负性(吉布斯不等式)
(由于KL散度不对称提出)JS散度(具有非负性、对称性):
极大似然估计:最小化生成数据分布和真实分布的KL散度
GAN:通过对抗训练,间接计算出JS散度,使得模型可以优化
最大化判别器损失,等价于计算合成数据分布和真实数据分布的JS散度
最小化生成器损失,等价于最小化JS散度(也就是优化生成模型)
(2)cGAN(输入是(image, label))
(3)DCGAN
判别器:滑动卷积
生成器:滑动反卷积
批归一化
激活函数

