RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1122663
Accepted
Potion
Potion
Asked:2020-05-09 06:55:45 +0000 UTC2020-05-09 06:55:45 +0000 UTC 2020-05-09 06:55:45 +0000 UTC

GAN 神经网络 - 噪声变化,但读数相同。这怎么可能?

  • 772

使用 Google 教程中的神经网络 https://www.tensorflow.org/tutorials/generation/dcgan

施工步骤

1)准备图像样本

2) 制作一个生成器(输入 - 许多神经元 (7x7x256),输出 - 1 张 28 x 28 灰度图像,从 -1 到 1)

3)我们制作了一个鉴别器——在输入端——一个灰度大小为 28 x 28 的图像,输出是一个判定数字,如果为 1,则图像 100% 为真,如果为 0,则图像肯定是假的。

4) 开始锻炼:

向发生器提供随机噪声

生成器生成图片

判别器看它是什么样的图片并呈现它的判决(比如说 0.1)

判别器查看完美图片并做出判断

我们计算生成器误差(它等于判别器对理想图片的正确答案(即1)与判别器如何估计我们的图片之间的交叉熵(0.1)

计算判别器误差(它等于 1 与判别器如何评价完美图片之间的交叉熵加上 0 与判别器如何评价错误图片之间的交叉熵)

应用这些错误来训练我们的模型

    gradients_of_generator = gen_tape.gradient(gen_loss, createGenerator.trainable_variables)
    gradients_of_discriminator = disc_tape.gradient(disc_loss, discriminator.trainable_variables)

    generator_optimizer.apply_gradients(zip(gradients_of_generator, createGenerator.trainable_variables))
    discriminator_optimizer.apply_gradients(zip(gradients_of_discriminator, discriminator.trainable_variables))
    `

我们一遍又一遍地重复。

问题

1)我是否正确理解了生成对抗网络的算法?

2)为什么输入端的生成器有这么多第一神经元?为什么是 7x7x256?256 是 BATCH_SIZE,用于样品制备。但是为什么要乘以 7x7?

 model.add(layers.Dense(7*7*256, use_bias=False, input_shape=(100, )))

3)每次在训练迭代中,输入噪声都会发生变化!而且不小心!在训练模型时,我们会为其添加基于误差的梯度,但如果输入数据一直是随机的,我们如何才能得到正确的答案?网络正常工作,经过 50 次迭代,数字看起来像数字,但为什么没有随机噪声干扰呢?

noise = random.normal([256, 100])

    with GradientTape() as gen_tape, GradientTape() as disc_tape:
      # получаем изображения от генератора изображений, передавая туда шум.
      generated_images = createGenerator(noise, training=True)
    ```


python
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    MaxU - stop genocide of UA
    2020-05-09T14:20:01Z2020-05-09T14:20:01Z

    我会试着回答你的一些问题。

    1. 您正确描述了构建模型的阶段,但描述了 BATCH_SIZE = 1 的情况。在一个步骤中,生成器BATCH_SIZE从白噪声创建图像,判别器计算生成器创建的BATCH_SIZE假图像和BATCH_SIZE真实图像的错误并总结错误。
    2. "Почему 7х7х256?"256 - 在这种情况下,它是第一层的深度。即使BATCH_SIZE我们这样做了,我们也不必改变输入张量的深度。选择第一层的维度,以便在输出处的所有展开层(反卷积/转置卷积)之后获得具有创建图像的张量的正确大小。那些。第一层的维度取决于生成图像的维度和扫描层的数量——层越多,维度应该在开始时越深。
    3. 如果生成器被赋予与输入相同的数据,那么它将学习为给定的输入数据创建相同的图片。随机噪声有助于训练生成器和判别器。生成器学习创建与原始真实图片更相似的图片,鉴别器学习从真实图片中区分出越来越好的假货。

    DCGAN 架构的另一个例子:

    在此处输入图像描述

    为简单起见,我们描述了一张图片的步骤。在实际情况下,这些将是具有附加维度的张量 - batch_size,即 在网络/模型的一个步骤中处理的图像数量。

    发电机

    1. 全连接层接收100个随机数的向量作为输入,输出为维度张量4x4x1024
    2. 维度张量作为输入馈送到扫描层4x4x1024。在展开层之后,我们得到维度张量8x8x512,即 图片的尺寸增加了一倍,深度减少了一半。
    3. 继续扫描:8x8x512-->16x16x256
    4. 继续扫描:16x16x256-->32x32x128
    5. 最后一个扫描层创建了我们需要的尺寸和深度的图片(在这种情况下,使用一个颜色通道 - 灰色阴影)

    鉴别器

    1. 在卷积层的输入我们得到一个维度的图片64x64x1,在输出的维度张量32x32x64
    2. 卷积层:32x32x64-->16x16x128
    3. 卷积层:16x16x128-->8x8x256
    4. 卷积层:8x8x256-->4x4x512
    5. 全连接层:4x4x512--> 1(图片为真实的概率)

    因此,选择生成器的第一个扫描层的张量维度,以便在所有扫描层之后,获得所需维度的图像(在上述情况下 - 64x64x1)。

    • 2

相关问题

  • 是否可以以某种方式自定义 QTabWidget?

  • telebot.anihelper.ApiException 错误

  • Python。检查一个数字是否是 3 的幂。输出 无

  • 解析多个响应

  • 交换两个数组的元素,以便它们的新内容也反转

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    如何从列表中打印最大元素(str 类型)的长度?

    • 2 个回答
  • Marko Smith

    如何在 PyQT5 中清除 QFrame 的内容

    • 1 个回答
  • Marko Smith

    如何将具有特定字符的字符串拆分为两个不同的列表?

    • 2 个回答
  • Marko Smith

    导航栏活动元素

    • 1 个回答
  • Marko Smith

    是否可以将文本放入数组中?[关闭]

    • 1 个回答
  • Marko Smith

    如何一次用多个分隔符拆分字符串?

    • 1 个回答
  • Marko Smith

    如何通过 ClassPath 创建 InputStream?

    • 2 个回答
  • Marko Smith

    在一个查询中连接多个表

    • 1 个回答
  • Marko Smith

    对列表列表中的所有值求和

    • 3 个回答
  • Marko Smith

    如何对齐 string.Format 中的列?

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5