问题标签 [dcgan]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
450 浏览

dataset - 条件 GAN - 相同地洗牌/拆分两个数据集

我正在尝试使用训练 DCGAN 来为一些图像着色。这样做时,我将我的 GAN 设置在图像的灰度版本上。然后我想先用一批真实图像训练我的 GAN/判别器,然后再用一批假图像训练。每隔一段时间,我想比较图像的彩色、灰度和地面实况版本。因此,我需要以相同的方式拆分成批的真实/灰色图像。我使用pytorch。查看我包含的代码,这些应该提供相同的批次。然而,他们没有。

我试过没有worker_init_fn。我也尝试了不同的随机函数调用并将它们传递给 worker_init_fn 无济于事。

0 投票
0 回答
321 浏览

tensorflow - GAN:如何在 Tensorflow 中更新批量标准化参数

批量标准化更新

  • 我正在使用Tensorflow中的批量标准化研究(生成对抗网络)。
  • 如何在 Tensorflow 中更新批量归一化参数(移动均值、移动方差)。
  • 在鉴别器和生成器上使用 batch_normalization 后如何更新图形?
  • 或者,它是否通过在鉴别器和生成器中使用 batch_normalization 函数自动更新?

完整源代码链接

开发环境

  • 皮查姆
  • 操作系统平台和分发:Windows 10 x64
  • TensorFlow 安装自:Anaconda
  • TensorFlow 1.12.0 版:
  • 蟒蛇3.6.7:
  • 移动设备:不适用
  • 重现的确切命令:N/A
  • GPU型号和内存:NVIDIA GeForce CTX 1080 Ti
  • CUDA/cuDNN:9.0/7.4

鉴别器

发电机

图形

批量标准化更新

0 投票
0 回答
110 浏览

python - 如何解决错误“ValueError:检查输入时出错:预期 input_1 有 4 个维度,但得到了形状为 (12, 1) 的数组”

我正在我自己的数据集上实现通用对抗网络模型,但在计算真实数据的鉴别器损失时遇到错误,如何解决该错误?是由于彩色图像造成的形状不匹配吗?

下面是判别器函数:

下面是生成器函数:

下面是训练函数:

0 投票
0 回答
52 浏览

python - 使用 keras 时,BN 层如何在 DCGAN 中工作?

我使用版本为 2.2.4 的 keras 在 CelebA 数据集上训练 DCGAN。我对 keras 功能 API 实现感到困惑,例如预测DCGAN 架构中的 BN 层。

在训练过程中,我需要使用generator.predict(noise)来获取一些用于判别器训练的假图像。并且我需要在训练过程中抽取样本来显示网络是否也在使用generator.predict(noise)进行改进。我知道在鉴别器训练期间,生成器生成的假图像应该在训练模式下通过生成器中的 BN 层,而从生成器中抽取样本时,应该在测试模式下完成。因为我在这两种情况下都使用预测方法,我想知道如何确保在该方法中正确使用训练和测试模式。任何人都可以告诉我我是否完成了训练,当我使用时BN层处于哪种模式预测方法。谢谢。

代码在一次迭代中是这样的:

想知道我对 DCGAN 中 BN 层的理解是否正确,以及keras 中的predict方法如何处理 BN 或 dropout 中的训练或测试模式。最后如果可能的话,如何在使用 keras 时手动控制 DCGAN 训练中的模式(set_learning_phase?)。

0 投票
2 回答
2529 浏览

python - 如何确保 TensorFlow Generator 上采样过程创建完全覆盖随机噪声的种子?

我正在努力将 tensorflow 2.0 dcGAN 教程 ( https://www.tensorflow.org/beta/tutorials/generation/dcgan ) 中的代码改编为音频信号的频谱图。我正在使用 libroasa chroma_cqt 将原始音频数据转换为 WxHx2 矩阵,并将其用作输入。当我尝试通过放大随机噪声来创建种子矩阵时,我得到的结果是随机噪声和 0 的时空交替带和顶部的细黑条(见图)。裸露的噪音

我已经修改了原始教程代码以处理各种尺寸的图像,并为种子图像和最终输出提供了良好的结果,但是相同的原则并没有引导我使用 3 维数据。如何确保我正在制作具有适当覆盖率的种子,而不是在实际训练模型时继续问题?

我正在输出音频噪声的视觉表示,它应该看起来像一个完全模糊的图像。相反,我得到了交替的噪音和大的黑色垂直条和顶部的细黑条。

问题最终是我需要遵循哪些规则来匹配生成器种子、内核大小和步幅?有人可以提供一个示例,说明如何以编程方式确保给定层数的步幅和内核大小不匹配?

0 投票
1 回答
34 浏览

deep-learning - 越来越多的使用 DCGAN 生成的人工图像

我实际上正在使用 DCGAN(Py-Torch 实现),输出始终是每个 epoch 的 64 大小的人工图像网格。我想增加这样的数字,但不知道(我不知道要更改哪个参数,但我尝试检查代码没有成功)。有谁知道如何做到这一点?

DCGAN 的整个 Py-Torch 实现可以在以下链接中找到: https ://pytorch.org/tutorials/beginner/dcgan_faces_tutorial.html

0 投票
1 回答
997 浏览

tensorflow - 如何使用 Tensorflow 2.0 为 DCGAN 使用多个 GPU - RuntimeError:副本局部变量只能在副本上下文中分配

我想开发一个分辨率为 256x256 的 DCGAN。为此,我需要使用多个 GPU,因为只有一个是不够的,而且可能会花费太多时间。

我按照此链接 https://www.tensorflow.org/beta/guide/distribute_strategy的文档中说明的程序进行操作

在我使用的脚本的顶部

strategy = tf.distribute.MirroredStrategy()

然后在我使用的生成器、鉴别器和损失函数中

with strategy.scope():

我得到的错误是:

RuntimeError: Replica-local variables may only be assigned in a replica context.

错误如下

0 投票
0 回答
200 浏览

keras - 深度学习,奇怪的批量标准化

下面是我的生成器结构。如您所见,如果我删除批量标准化,GAN 的效果非常好。但是如果我在注释的地方添加批量标准化,它只会显示噪音。

我不知道为什么。我已经尝试将 BN 添加到仅生成器或仅将鉴别器添加到两者中。即使我只在任何地方添加一个 BN 层,它也永远不会起作用。

我正在尝试修复 git https://github.com/rickiepark/deep-learning-with-python-notebooks/blob/master/8.5-introduction-to-gans.ipynb的源代码

我知道用韩语解释说你们不容易理解,但它是 keras 教科书的非常简单的来源。

0 投票
0 回答
293 浏览

python - DCGAN,其中判别器和生成器的图像大小不同

我正在使用 DCGAN,其中我的鉴别器将输入大小为 128 x 128 的真实图像,而生成器网络的输入是 64x64 图像(较低分辨率)而不是多项高斯分布。当我尝试运行训练循环时,我遇到了维度错误,我相信我的鉴别器和生成器维度架构可能是错误的。但是,我无法掌握错误所在。ngf = 64, ndf = 128, nz = 745 下面是生成器和判别器的代码:

0 投票
3 回答
1020 浏览

deep-learning - BatchNormalization 结果不佳

我一直在尝试实施Facebook 的论文DCGan,并被以下两个问题阻止了将近 2 周。任何建议,将不胜感激。谢谢。

问题一:

DCGAN 论文建议在生成器和判别器中都使用 BN(Batch Normalization)。但是,使用 BN 而不是没有 BN,我无法获得更好的结果。

我复制了我使用的 DCGAN 模型,它与 DCGAN 论文完全相同。我不认为这是由于过度拟合。因为(1)它一直显示与初始噪声图片相同的噪声,并且似乎从未接受过训练。(2) Loss 值非常稳定,gan 和 discriminator 都没有真正改变。(它保持在 0.6 ~ 0.7 左右,并且从来没有像两个模型都崩溃时那样感到沮丧或颠簸。)如果我只检查损失函数,似乎它得到了很好的训练。

问题 2:

当我使用 float16 时,它总是给我 Nan 和下面的模型。我已将 epsilon 更改为 1e-4 1e-3 ,但都失败了。还有一个问题。如果我不使用 BatchNormalization,它可以是 Nan。足够有道理,我能明白。但是,如果我使用 BatchNormalization,它会在每一层中标准化。即使结果变成非常大的数字或非常小的数字,它也会在每一层中进行批量标准化,结果将几乎居中并且不应该发生淡出。不是吗?这实际上是我的想法,但我不知道我在想什么。请有人帮助我。

===== 生成器 =====

输入#(无,128)<=潜在

Dense # (None, 16384)
BatchNormalization
LeakyReLU

重塑 #(无、4、4、1024)

Conv2DTranspose # (无, 4, 4, 512)

BatchNormalization
LeakyReLU

Conv2DTranspose # (无, 8, 8, 256)

BatchNormalization
LeakyReLU

Conv2DTranspose # (无, 16, 16, 128)

BatchNormalization
LeakyReLU

Conv2DTranspose #(无、32、32、64)

BatchNormalization
LeakyReLU

Conv2DTranspose # (无, 64, 64, 32)

BatchNormalization
LeakyReLU

Conv2DTranspose # (无, 128, 128, 16)

BatchNormalization
LeakyReLU

Conv2D #(无、128、128、3)

===== 鉴别器 =====

Conv2D # (None, 128, 128, 3) LeakyReLU

Conv2D # (None, 64, 64, 16) BatchNormalization
Dropout
LeakyReLU

Conv2D # (None, 32, 32, 32)
BatchNormalization
Dropout
LeakyReLU

Conv2D # (None, 16, 16, 64)
BatchNormalization
Dropout
LeakyReLU

Conv2D # (None, 8, 8, 128)
BatchNormalization
Dropout
LeakyReLU

Conv2D # (None, 4, 4, 256)
BatchNormalization
Dropout
LeakyReLU

Conv2D # (None, 2, 2, 512)
BatchNormalization
Dropout
LeakyReLU

压平
Dropout
Dense

我尝试过的最后一个超参数如下,我没有忘记将高斯噪声添加到训练图片中。