【问题标题】:Use GAN discrimator for single-class classification in MATLAB在 MATLAB 中使用 GAN 判别器进行单类分类
【发布时间】:2020-05-20 00:40:23
【问题描述】:

我尝试实现一个神经网络来对不同的缺陷进行分类以进行质量检查。我想使用单类分类。 为此,我想训练一个生成对抗网络并使用鉴别器进行分类。

我使用 sunflower-example 来实现我的第一个 GAN。 (https://de.mathworks.com/help/deeplearning/examples/train-generative-adversarial-network.html)

在这个例子中,有一行在鉴别器网络的帮助下对生成的输出进行“分类”:

dlYPredGenerated = forward(dlnetDiscriminator, dlXGenerated); 

现在,我希望输出包含 2 个标签:“原始”或“假”。相反,我得到了一长串数字:

(:,:,1,1) =
    5.9427
(:,:,1,2) =
    7.5930
(:,:,1,3) =
    9.3393
etc.

我认为这些是鉴别器网络的损失值。

我想知道如何使用生成的鉴别器网络对输入图像进行分类。问题是判别器网络没有全连接层,或者在层结构的末端有一个分类层。所以看起来判别器架构不同于“正常”卷积神经网络的架构。

总结

我想使用 Matlab sunflower-example (https://de.mathworks.com/help/deeplearning/examples/train-generative-adversarial-network.html) 训练 GAN 并提取鉴别器以用作分类网络。

【问题讨论】:

    标签: matlab deep-learning conv-neural-network generative-adversarial-network


    【解决方案1】:

    来自 matlab sunflower-example,

    dlYPredGenerated = forward(dlnetDiscriminator, dlXGenerated);

    它在没有激活的情况下给出最后一个 FC 连接层的输出(不是损失)。这就是为什么它带有

    probGenerated = sigmoid(dlYPredGenerated);

    因此,probGenerated 是您希望将其视为虚假或真实概率的真实输出。顺便说一句,输出有 4 个维度,因为它具有 SSCB (Spatial-spatial-channel-batch) 的 fmt 标签,并且损失来自

    [lossGenerator, lossDiscriminator] = ganLoss(probReal,probGenerated);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-25
      • 2012-05-09
      • 2018-05-19
      • 2014-04-07
      • 2014-04-29
      • 2014-08-07
      • 1970-01-01
      相关资源
      最近更新 更多