美文网首页深度学习
2020机器学习GAN(F)

2020机器学习GAN(F)

作者: zidea | 来源:发表于2020-02-27 20:06 被阅读0次
naruto_vs_sasuke.png

训练

training.jpeg

好现在定义好判别器模型和生成模型,而且定义好优化器这里梯度下降使用 Adam 给以较小学习率。在开始训练前我们介绍一下 tensorflow 2.0 的求导函数,感觉点 mxnet 的求导函数,这样我们就可以手动对函数进行求导,用法也很像mxnent。

x = tf.constant(3.0)
with tf.GradientTape() as g:
    g.watch(x)
    y = x * x
dy_dx = g.gradient(y, x)
print(dy_dx)
tf.Tensor(6.0, shape=(), dtype=float32)
  1. 先给判别器真实图片,判别器会对这些真实图片进行打分,输出 real_out
  2. 然后给生成器输入噪声变量来随机生产一张图片
  3. 接下里将生成器用噪声生成图片输入给判别器进行判别,给出 fake_out
  4. 有了这些判别器对真实图片和生成图片进行打分结果,fake_out 和 real_out 我们就可以用这些结果来评判生成器模型和判别器模型
  5. 通过梯度下降不断优化参数来提高判别器和生成器的精度,减少损失函数
sakuke_discriminator.png
def train_step(images):
    noise = tf.random.normal([BATCH_SIZE,noise_dim])
    # tape 胶带,磁带意思     
    with tf.GradientTape() as generator_tape, tf.GradientTape() as discriminator_tape:
        real_out = discriminator(images,training=True)
        gen_images = generator(noise,training=True)
        fake_out = discriminator(gen_images,training=True)
        
        gen_loss = generator_loss(fake_out)
        disc_loss = discriminator_loss(real_out,fake_out)
    generator_gradient = generator_tape.gradient(gen_loss,generator.trainable_variables)
    discriminator_gradient = discriminator_tape.gradient(disc_loss,discriminator.trainable_variables)
    generator_optimizer.apply_gradients(zip(generator_gradient,generator.trainable_variables))
    discriminator_optimizer.apply_gradients(zip(discriminator_gradient,discriminator.trainable_variables))

可视化生成图片

我们将随机变量传入到生成器(generator)来生成图片,这里显示图片我们用到

def show_images(generator,test_noise):
    gen_images = generator(test_noise,training=False)
    fig = plt.figure(figsize=(8,8))
    for row in range(gen_images.shape[0]):
        plt.subplot(4,4,(row + 1))
        plt.imshow((gen_images[row,:,:,0] + 1)/2,cmap='gray')
        plt.axis('off')
    plt.show()
    

开始训练

def train(dataset,epochs):
    print(epochs)
    for epoch in range(epochs):
        for image_batch in dataset:
            train_step(image_batch)
            print(".",end="")
        show_images(generator,seed)
dataset
train(dataset,100)
<BatchDataset shapes: (None, 28, 28, 1), types: tf.float32>

我们简单选择几张,大家可以手动coding 体验一下


output_37_1.png
output_37_19.png

相关文章

  • 2020机器学习GAN(F)

    训练 好现在定义好判别器模型和生成模型,而且定义好优化器这里梯度下降使用 Adam 给以较小学习率。在开始训练前我...

  • 2020机器学习GAN(5)

    参考李宏毅老师分享 先解释一下根据样本进行生成图片,然后把图片每一个像素都看成其一个特征,那么图片就是存在一个高维...

  • 2020机器学习GAN(8)

    为什么不用 Discriminator 生成图片 其实 Discriminator 会从整体来考量图片好坏假设我们...

  • 2020机器学习GAN(1)

    在 2018 年,深度学习掀起 GAN 的潮流,在许多领域都已经有了应用,而且基于 GAN 项目五花八门。早在**...

  • 2020机器学习GAN(3)

    代码讲解 今天 tensorflow2.0 实现一个简单全连接实现 GAN。我们先回忆在做机器学习一般流程,然后我...

  • 2020机器学习GAN(6)

    我们就是找到一个 G ,这个 G 可以让和之间的 JSDiv 距离尽量小。 回忆一下我们在 GAN 中任务,就是找...

  • 2020机器学习GAN(2)

    今天目标是介绍一下 GAN 是如何做到输出图片的这个样任务。在 GAN 中分别有两个阶段,在生成阶段就是固定生成器...

  • 2020机器学习GAN(CGAN) (9)

    CGAN(Conditonal Generation GAN) 什么是 CGAN 呢?之前我们 GAN 生成图片是...

  • 2020机器学习GAN(WGAN) (9)

    我们之前都用 JS 散度来衡量两笔数据之间差异,今天我们就来先讨论一下 JS 散度作为衡量工具是否合适的问题。我们...

  • 深入浅出对抗生成网络(GAN)

    GAN是机器学习的大牛Ian Goodfellow于2014年提出,是一种无监督学习的实现方案。GAN一个比较接地...

网友评论

    本文标题:2020机器学习GAN(F)

    本文链接:https://www.haomeiwen.com/subject/rvaxhhtx.html