使用GAN判别器在MATLAB中进行单类分类

问题描述 投票:1回答:1

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

我使用向日葵示例来实现我的第一个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.

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

我想知道如何使用所得的鉴别器网络对输入图像进行分类。问题在于,鉴别器网络没有完全连接的层,或者在层结构的末尾没有分类层。因此,鉴别器架构似乎不同于“正常”卷积神经网络的架构。

有人可以帮助我完成此任务吗?

TL; DR:我想使用matlab向日葵示例(https://de.mathworks.com/help/deeplearning/examples/train-generative-adversarial-network.html)for训练GAN,并提取鉴别器以用作分类网络。

matlab deep-learning conv-neural-network generative-adversarial-network
1个回答
0
投票

从matlab向日葵示例中,

dlYPredGenerated =转发(dlnetDiscriminator,dlXGenerated);

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

probGenerated = Sigmoid(dlYPredGenerated);

因此,probGenerated是您要视为伪造或真实概率的真实输出。顺便说一句,输出具有4个维度,因为它具有fmt标签SSCB(空间-空间通道-批处理),并且损失来自[]

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

© www.soinside.com 2019 - 2024. All rights reserved.