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向日葵示例中,
dlYPredGenerated =转发(dlnetDiscriminator,dlXGenerated);
它不激活就给出最后一个FC连接层的输出(不是丢失)。这就是为什么它带有
probGenerated = Sigmoid(dlYPredGenerated);
因此,probGenerated是您要视为伪造或真实概率的真实输出。顺便说一句,输出具有4个维度,因为它具有fmt标签SSCB(空间-空间通道-批处理),并且损失来自[]
[[lossGenerator,lossDiscriminator] = ganLoss(probReal,probGenerated);