TGen-NU model fusion

本周工作

  • TGAN生成X-ray图片
  • GenPU生成X-ray图片
  • 设计TGen-NU模型,并尝试生成X-ray图片
  • 解决归一化问题[1]
  • 基本完成TGen-NU的生成任务,但仍存在不稳定、不收敛问题[2]
  • 查阅学习GAN的公式推导、扩展资料如WGAN、DCGAN
  • 新思路:把MPS融入到GenPU/TGen-NU模型中

4月29日 发现问题

【1】归一化问题及处理思路

直接原因:张量的初始化

预备知识:高斯白噪声

所谓高斯白噪声(White Gaussian Noise)中的高斯是指概率分布是正态函数,而白噪声是指它的二阶矩不相关,一阶矩为常数,是指先后信号在时间上的相关性。高斯白噪声是分析信道加性噪声的理想模型,通信中的主要噪声源——热噪声就属于这类噪声。在数学之美的网页作弊中,也提到有高斯白噪声。

下面步入正题,由于效果,我在GenPU模型中避开了高斯白噪声的初始化,而仅让它们满足取值在0-1之间。于是在pytorch中出现张量收缩的结果不在0-1之间的问题,就导致激活函数会将该结果激活到1或0附近,就会看到如下的空白格,无论迭代多少次都是这样,因为判别器失效了。

但是采用pytorch中的Normalize方法又会固定的将判别器的输出变成1,因为映射成(batch, 1)的格式再按第二个维度归一化确实就是1,此外Normalize操作也会破坏学习到的概率分布(实验结论)。

那transform.Normalize()是怎么工作的呢?以上面代码为例,ToTensor()能够把灰度范围从0-255变换到0-1之间,而后面的transform.Normalize()则把0-1变换到(-1,1).具体地说,对每个通道而言,Normalize执行以下操作:

image=(imagemean)/stdimage=(image-mean)/std

其中mean和std分别通过(0.5,0.5,0.5)和(0.5,0.5,0.5)进行指定。原来的0-1最小值0则变成(0-0.5)/0.5=-1,而最大值1则变成(1-0.5)/0.5=1.

Pytorch discuss

So if we encounter grayscale images, we will use

>transforms.Normalize([0.5], [0.5])

and if we encounter RGB( 3 channels ) , we will use the following

>transforms.Normalize(mean=[0.485, 0.456, 0.406],
std=[0.229, 0.224, 0.225])

【2】不稳定、不收敛、模式崩溃问题

在实验过程中还经常遇到另一类问题,那就是负样本的生成模型总是无法学习到真实样本的概率分布。如下图所示,图左为迭代了2700次的负样本生成器 (n_gen),图右为迭代了2700次的正样本生成器 (p_gen)。明显看到正样本生成器的生成效果还算不错,可是负样本没有学习到样本的概率分布,也就是出现了不收敛的情况。

在网上查阅了相关资料,有学者层讨论并尝试改进GAN网络的训练不稳定不收敛问题,除此之外GAN网络还有模式崩溃问题。模式崩溃问题指的是GAN网络最终只需学到几个别的样本,并且跟样本完全一样,这类似于神经网络里常见的过拟合问题,目前还在进一步调试分析中。

【3】找bug思路

程序报错还是比较容易去解决的,最糟糕的就是费尽周折之后在网上找到某种解决方案,解决了程序也就能正常运行了。可有些错误是潜在的,程序不会运行中断,可你就是得不到理想的结果。这时就要学会去排查错误,排查错误的方式有很多种,最简单的也是最直接的就是在不影响整体的情况下注释掉一个个模块,逐步比较各个层的输入输出排查。

在GAN网络中tensor layer不能学习到样本的概率分布,这也是一种很明显的错误。但自带的Linear是可以的,这就说明极有可能自己加的tensor layer中某个地方出现了问题,和Linear带来的输入和输出不一致。这时不能简单把某个模块注释掉,而是尝试从一个简单的模型开始算起,有一个可正确运行的version进行输入输出对比,最终找到normalize带来的问题。这也是一种重要的找问题思路,从简到繁。

  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.

扫一扫,分享到微信

微信分享二维码
  • Copyrights © 2015-2024 YuleZhang's Blog
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信