问题标签 [generative-adversarial-network]
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.
python - 使用 GAN 网络进行数据增强以进行手写字母识别
我有一个用于识别孟加拉语字母的简短数据集(9600
用于训练和3000
测试的数据)。班级总数:50
.
这似乎是一小部分数据。所以我试图通过ImageDataGenerator
from来扩充数据集keras.preprocessing.image
。它运作良好。
现在我正在尝试通过GAN network
生成更大的数据集来扩充数据。
我已经阅读了一些基础知识并遵循了一些教程。喜欢deeplearning4j.org 中的这个,并遵循Github中的这段代码。
但是我不知道如何生成增强数据。
也许,我错过了一些策略。有人可以告诉我用 GAN 生成数据的策略吗?
我的策略是:
- 准备
training
和test
数据集。 - 训练
Generator
和discriminator
。 - 通过生成新图像
Generator
- 试图区分图像
real
和fake
图像
tensorflow - Keras 中的生成对抗网络没有像预期的那样工作
我是 Keras 机器学习的初学者。我正在尝试了解生成对抗网络 (GAN)。为此,我正在尝试编写一个简单的示例。我使用以下功能生成数据:
使用此功能生成的数据类似于以下示例:
现在的目标应该是训练神经网络来生成类似的数据。对于 GAN,我们需要一个生成器网络,我这样建模:
一个看起来像这样的鉴别器:
组合模型:
我有一个产生噪声的函数(一个随机数组)
然后我正在训练模型:
就像您看到的那样,我已经尝试训练模型进行 1. Mio 迭代。但是生成器随后会输出如下所示的数据(尽管输入不同):
绝对不是我想要的。所以我的问题是: 1. Mio Iterations 是不是不够,还是我的程序的概念有什么问题?
编辑:
这就是我绘制数据的函数:
python - 将张量从 128,128,3 转换为 129,128,3,然后填充到该张量的 1,128,3 值发生
这是我的 GAN 代码,其中模型正在初始化,一切正常,这里只有问题的相关代码:
我要生成 128x128x3 图像,我想做的是给鉴别器提供 129x128x3 图像,并且在训练时将 1x128x3 文本嵌入矩阵与图像连接。但是我必须在开始时指定每个模型(即 GEN 和 DISC)将获得的张量和输入值的形状。Gen 采用 100noise+384 嵌入矩阵并生成 128x128x3 图像,该图像再次通过一些嵌入(即 1x128x3)嵌入并馈送到 DISC。所以我的问题是,这种方法是否正确?另外,如果它是正确的或有意义的,那么我如何在开始时具体说明所需的东西,这样它就不会给我诸如形状不兼容之类的错误,因为在开始时我必须添加这些行:-
但是 img 是 128x128x3 并且后来在训练期间通过连接嵌入矩阵更改为 129x128x3。那么如何通过填充或附加另一个张量或简单地重塑这当然是不可能的,将上述代码中的“img”从 128,128,3 更改为 129,128,3。任何帮助将不胜感激。谢谢。
python - .data 在 pytorch 中有什么用
我刚从https://github.com/heykeetae/Self-Attention-GAN得到代码(文件是spectral.py)。部分代码在下面。我真的不明白 .data 的用途是什么,这是某个类中的方法吗?如果是,它属于哪个类?
python - 运行时错误:GAN 的图断开连接,因为无法获得输入
这是我的鉴别器架构:
这是生成器架构:
以下是我制作 GAN 网络的方式:
鉴别器有 2 个模型,将得到一个形状图像128x128x3
和一个形状嵌入作为输入,然后将1x128x3
两个模型合并。生成器模型只是获取噪声并生成128x128x3
图像。所以在这一行combined = Model(z, valid)
我收到以下错误:
我认为这是因为鉴别器找不到嵌入输入,但我给它输入了一个 shape 的张量(1,128,3)
,就像噪声被输入到生成器模型一样。谁能帮我在哪里做错了?
在这里设置完所有内容后,我将如何从合并在一起的噪声和嵌入向量中生成图像,鉴别器将获取图像和向量来识别假货:
python - 合并模型中的反向传播
我正在研究条件 GAN,我的生成器和鉴别器都有两个输入,并使用如下合并模型:-
DCGAN 被用于分类和生成以“临时”嵌入为条件的图像,我对这两个模型都使用了 Adam“optimizer = Adam(0.0001, 0.5)”。
GEN 就像输入噪声“z”和“temp”合并它们并制作 128x128x3 图像。Disc 拍摄图像并对其执行 conv2d,然后将“temp”重塑为 1,128,3 并合并两者,进一步应用 conv2d 并输出一个 sigmoid 单元。我的问题是,在反向传播期间,合并模型的权重如何更新,让我们在这里说一下 Disc:-
我的磁盘损失从 2.02 开始,在 150 个时期内下降到 6.7 左右,Gen 的损失在 150 个时期内从 0.80 下降到 0.00024,我得到了垃圾,我该如何改进我的架构?我想知道也许反向传播在合并模型中效果不佳,因为它变得非常复杂。我正在使用 batchnorm、leaky relu、conv2d + stride,但没有池化层和标签平滑。
machine-learning - Gans中生成器的损失函数
我已经深入研究了 gans 并且还在 pytorch 中实现了它,现在我正在研究 gans 背后的核心统计数据,当我在查看该网站时, 它表示Gans 数学
“Loss(G) = - Loss(D),请注意,我们将生成器成本定义为鉴别器成本的负值。这是因为我们没有明确的方法来评估生成器的成本。”
但是在实现 gan 时,我们将生成器的损失定义为:
Bintropy 生成器生成的图像的鉴别器输出和真实标签之间的交叉熵损失,如原始论文和以下代码(由我实现和测试)
请解释一下两者之间的区别,以及正确的一个
代码链接:https ://github.com/mabdullahrafique/Gan_with_Pytorch/blob/master/DCGan_mnist.ipynb
谢谢
python - Tensorflow GAN 仅在批量大小等于 1 时有效
我正在训练 CGAN 从损坏的图像中重建图像。我已经为可变批量大小编写了所有代码,因此我也可以在可变批量大小上进行训练(我没有收到错误或任何东西)。当我使用批量大小 1 时,2 分钟后重建的图像不再有任何奇怪的伪影。然而,这是我的问题:对于任何其他批量大小,即使我尝试不同的学习率或训练多个小时,我也会得到非常奇怪的棋盘伪影。
这是经过一段时间训练后批量大小为 2 的重建图像。(这些奇怪的伪影不在损坏的数据中。)
这是批量大小为 2 时生成器损失的对抗性分量。
这是批量大小为 2 的生成器损失。
这是批量大小为 2 的判别器损失。
为了比较,批量大小为 1:
橙色是火车,蓝色是验证
一旦批量大小大于一个,我的代码似乎会做一些完全不同的事情。我确定批次正在正确加载。我要疯了吗?
我的模型:
我的训练:
批量大小一的默认配置:
我很感激你可能有任何见解......