【问题标题】:How to extract feature for an image after neural network training?神经网络训练后如何提取图像的特征?
【发布时间】:2016-04-12 07:24:28
【问题描述】:

有没有办法从一组图像中学习无监督特征。类似于word2vecdoc2vec,在其中学习神经网络并给定新文档,我们得到它的特征。

example 类似,表明它可以加载学习的 nn-model 并预测新图像的特征。

是否有任何简单的示例如何在图像上实现 cnn 并恢复它们的功能会有所帮助!!

假设在这个example 如果我想获得所有X_trainX_test 的cnn 功能......有什么办法吗? 此外,如果我们可以获得每张图像的每层权重,我们可以将它们堆叠并用作特征。在那种情况下,有办法得到同样的结果。 如果我们将这些特征视为向量,则将这些特征用于无监督任务会更容易。

【问题讨论】:

    标签: python machine-learning keras neural-network deep-learning


    【解决方案1】:

    如果我正确理解了您的问题,那么这个任务在深度学习领域是很常见的。对于图像,我认为最好的是卷积自动编码器。您可以阅读有关此架构的信息,例如这里

    http://people.idsia.ch/~ciresan/data/icann2011.pdf

    以前版本的 Keras 支持这种架构作为核心层之一,尽管从 1.0 版本开始,我注意到它从文档中消失了。但是 - 从头开始​​构建它仍然很容易:)

    在 noimage 情况下,还有另一种方法,例如受限玻尔兹曼机。

    更新:

    根据我的个人经验,哪种激活最适合从神经网络激活中获取新特征,这取决于您使用的网络的大小。如果您使用的网络最后一层很宽(有很多节点),那么只获取最后一层可能很有用(如果您还想考虑前一层,由于参数的数量 - 它可能会损害学习的性能)。但是 - 如果(就像在某些 MNIST 网络的情况下)你的最后一层不足以完成这项任务 - 你可以尝试使用之前的层激活甚至所有网络活动。老实说——我不期望在这种情况下有太大的改进——但你可以试试。我认为你应该同时使用这两种方法——从只获取最后一层激活开始——然后在你从前一层添加激活时尝试检查新分类器的行为。

    我强烈建议您从网络正在学习哪种特征中获得一些见解 - 使用它的激活的 T-SNE 嵌入。在许多情况下,我发现它很有用 - 例如检查层的大小是否足够。使用 T-SNE,您可以检查从最后一层获得的特征是否是您的类的良好鉴别器。它还可以让您深入了解您的数据以及神经网络真正在学习什么(以及惊人的可视化效果:))

    【讨论】:

    • 谢谢@Marcin .. 我会研究一下论文。我想了解的是,在 word2vec 中删除最后一层并仅将隐藏层权重作为特征......对于图像,它仍然成立还是我们必须从所有层中获取权重?并且关于 keras v1.0 有重大变化......我也没有看到自动编码器!
    • 酷。可视化是了解特定层特征的重要性的好主意。感谢您更新的答案。我正在从浅层网络转移到深层网络......因此有很多问题!再次感谢!!
    猜你喜欢
    • 1970-01-01
    • 2017-05-28
    • 1970-01-01
    • 2023-04-04
    • 2011-04-07
    • 1970-01-01
    • 1970-01-01
    • 2015-06-02
    • 2014-03-26
    相关资源
    最近更新 更多