南京网站微信建设,网站开发排行,关键词优化的原则,免费设计网一、查漏补缺、熟能生巧#xff1a;
1.什么是转置卷积convTranspose、以及这种转置卷积怎么使用#xff1a;
#xff08;1#xff09;具体的原理直接看李沐老师的那个演示#xff0c;非常清晰#xff1a;
47 转置卷积【动手学深度学习v2】_哔哩哔哩_bilibili
#x…一、查漏补缺、熟能生巧
1.什么是转置卷积convTranspose、以及这种转置卷积怎么使用
1具体的原理直接看李沐老师的那个演示非常清晰
47 转置卷积【动手学深度学习v2】_哔哩哔哩_bilibili
2对于这个代码 def dconv_bn_relu(self, in_dim, out_dim):return nn.Sequential(nn.ConvTranspose2d(in_dim, out_dim, kernel_size5, stride2,padding2, output_padding1, biasFalse), #double height and widthnn.BatchNorm2d(out_dim),nn.ReLU(True))
来自GPT的说法 2.关于weight_init和self.apply() 3.关于G(z_samples)部分的一个不理解的地方 二、DCGAN WGAN ,WGAN_GP 三种的5个epoch的效果对比:
1.DCGAN版本一般般直接用助教的sample_code即可 2.对于WGAN的代码 也就是在DCGAN中进行这种修改就好了
效果 3.采用WAGN-GP
需要做的修改
PyTorch-GAN/implementations/wgan_gp/wgan_gp.py at master · eriklindernoren/PyTorch-GAN (github.com) 主要是写一个函数然后把weight_clam那个for循环注释掉其他的就按照助教给的注释来就好了
def compute_gradient_penalty(self,D, real_samples, fake_samples): Tensor torch.cuda.FloatTensor #if cuda else torch.FloatTensor#这里需要参考那个link引入gradient penalty functionImplement gradient penalty functionCalculates the gradient penalty loss for WGAN GP# Random weight term for interpolation between real and fake samplesalpha Tensor(np.random.random((real_samples.size(0), 1, 1, 1)))# Get random interpolation between real and fake samplesinterpolates (alpha * real_samples ((1 - alpha) * fake_samples)).requires_grad_(True)d_interpolates D(interpolates)fake Variable(Tensor(d_interpolates.shape).fill_(1.0), requires_gradFalse)# Get gradient w.r.t. interpolatesgradients autograd.grad(outputsd_interpolates,inputsinterpolates,grad_outputsfake,create_graphTrue,retain_graphTrue,only_inputsTrue,)[0]gradients gradients.view(gradients.size(0), -1)gradient_penalty ((gradients.norm(2, dim1) - 1) ** 2).mean()return gradient_penalty
效果 中午睡觉的时候用这个kaggle来train一下这个WGAN-GP,
直接设置critic 5 , epoch 1000 试一试
很可惜第36个epoch的时候就崩掉了不过生成的效果还不错,比之前的都要好一些
所以估计只要epoch足够多用WGAN-GP可以生成比较好的动漫人脸的