Pytorch 使用DCGAN生成MNIST手写数字 入门级教程

DCGAN实战,入门级别的深度卷积生成对抗网络实战,利用MNIST手写数据集进行生成手写数字。加深对相关原理的理解,并对比了与基础GAN的异同点
摘要由CSDN通过智能技术生成

DCGAN的原理本文不再介绍,可以参考:DCGAN论文解读-----DCGAN原理简介与基础GAN的区别

之前发过一篇利用GAN生成手写数字的实战演示,具体参考:入门GAN实战---生成MNIST手写数据集代码实现pytorch

由于利用GAN生成的图像噪声较多,因此利用DCGAN再次完成该实验。两种方法区别不大,只是在定义生成器和鉴别器的时候稍有改动。具体演示如下:

1.加载MNIST手写数据集

    如果已经提前下载好MNIST手写数据集,记得把代码中的download改为False。具体MNIST数据集下载方法参考:深度学习入门--MNIST数据集及创建自己的手写数字数据集

# 加载数据
transform = transforms.Compose([transforms.ToTensor(),
                                transforms.Normalize(mean=0.5, std=0.5)])

train_ds = torchvision.datasets.MNIST('data/',
                                      train=True,
                                      transform=transform,
                                      download= True)
dataloader = torch.utils.data.DataLoader(train_ds, batch_size=64, shuffle=True)

2.定义生成器Generator

与基础GAN的生成器相比,利用了反卷积并添加了BN层

# 定义生成器
class Generator(nn.Module):
    def __init__(self):
        super(Generator,self).__init__()
        self.linear1 = nn.Linear(100, 256*7*7)  # 希望生成1*28*28的图片 7反卷积后14,再反卷积28 pytorch中channel在前
        self.bn1 = nn.BatchNorm1d(256*7*7)
        self.deconv1 = nn.ConvTranspose2d(256, 128,
                                          kernel_size=(3,3),
                                          str
  • 12
    点赞
  • 87
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农男孩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值