最近看了一下神经网络和卷积神经网络(CNN)的基础概念,然后开始看生成对抗网络(GAN)的基础知识,之后会自己写一下代码,用GAN对数据集进行训练。
一、12月的计划:
(1)先看懂GAN的基础理论
(2)找一些代码,想办法把轴承的数据集放到GAN里面训练
(3)看老师给的论文,以及自己去看GAN的变种论文、gihub的开源代码,并进行复现
二、学习方法:
1.b站有李宏毅的视频,讲的比较清晰,看完GAN的4讲内容
2.这个链接里,有人整理好了各种GAN论文的原文地址,之后的计划就是三个月内都读一遍?
3.一些参考:
生成对抗网络-改进方法|深度学习(李宏毅)(二十四)笔记
三、码住博客
-
GAN的原理,及其他经典变种,例如DCGAN、WGAN和WGAN-GP、Conditional GAN的介绍。不过这篇写的比较浅显,只用来快速了解GAN使用。下面的是看这篇博文时去查的东西
(1)池化层、FC层、BN层的作用。BN层训练的步骤。
(2)内部协变量偏移(Internal Covariate Shift)和批归一化(Batch Normalization)
(3)激活函数Relu 及 leakyRelu
(4)转置卷积
(5)stride卷积 -
我在github找到了一个各种gan代码的开源,地址为:PyTorch-GAN-master
在gan里跑了一下CWRU的轴承数据集,发现 dloss和gloss十分不稳定,且gloss根本不收敛,后来想起来,轴承数据是有标签数据的,不能直接拿来训练,需要用CGAN方法。
下面是直接训练时的LOSS
-
CGAN 简单来说,就是讲标签信息和噪声z一起输入生成器,然后判别器判断对错来更新。
(1)简单用mnist数据集的效果来观察GAN和CGAN,不过每次200个epochs都要训练3个小时左右,好慢。。。
这是GAN方法的结果:
这是CGAN方法的结果,因为懒得训练了,就训了50个epochs,不过前50epochs的效果还是明显好于GAN的:
从生成图片的结果可以看出,基本上GAN生成的最好的图片,也不如CGAN后几十张生成的图片的质量。
(2)注释代码,对一些不懂的代码进行搜素
(3)跑通在MINIST数据集的程序之后,使用CGAN代码在轴承数据上进行复现。。(懒得做了)
四、SGAN
由于时间紧迫,所以先不做整理。。。。
1.pytorch中的weight-initilzation用法,这里面有apply函数的用法