Python 神经网络训练后如何提取图像的特征?

Python 神经网络训练后如何提取图像的特征?,python,machine-learning,keras,neural-network,deep-learning,Python,Machine Learning,Keras,Neural Network,Deep Learning,有没有一种方法可以从一组图像中学习无监督的特征。类似于word2vec或doc2vec,学习神经网络并给出新文档,我们可以得到它的特性 与此类似的是,它可以加载学习的神经网络模型并预测新图像的特征 有没有任何简单的例子,如何实现cnn的图像和得到他们的功能回来将有帮助 在此假设 如果我想为所有X\u列车和X\u测试获取cnn功能。。。有办法吗? 此外,如果我们可以得到每层每幅图像的权重,我们可以将它们堆叠起来并用作特征。在这种情况下,有没有办法得到同样的结果。 如果我们把这些特征看作是向量,那么

有没有一种方法可以从一组图像中学习无监督的特征。类似于
word2vec
doc2vec
,学习神经网络并给出新文档,我们可以得到它的特性

与此类似的是,它可以加载学习的神经网络模型并预测新图像的特征

有没有任何简单的例子,如何实现cnn的图像和得到他们的功能回来将有帮助

在此假设 如果我想为所有
X\u列车
X\u测试
获取cnn功能。。。有办法吗? 此外,如果我们可以得到每层每幅图像的权重,我们可以将它们堆叠起来并用作特征。在这种情况下,有没有办法得到同样的结果。
如果我们把这些特征看作是向量,那么使用这些特征就更容易了。

< P>如果我正确地理解了你的问题,这个任务在一个很深的学习领域中是很常见的。在图像的情况下,我认为最好的是卷积自动编码器。您可以在此处阅读有关此架构的信息

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

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

更新:

从我个人的经验来看,对于从神经网络激活中获得新功能来说,什么样的激活是最好的,这取决于你使用的网络的大小。如果使用最后一层宽的网络(有很多节点),只得到最后一层可能是有用的(由于参数的数量,如果您还需要考虑先前的层——它可能会损害学习的性能)。但是-如果(像某些MNIST网络的情况)您的最后一层不足以完成此任务-您可以尝试使用之前的层激活,甚至所有网络活动。老实说,我并不期待这种情况会有多大的改善,但你可以试试。我认为您应该使用这两种方法——从只进行最后一层激活开始,然后在添加前一层激活时尝试检查新分类器的行为


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

谢谢@Marcin。。我会调查这份报纸的。我想了解的是,在word2vec中,删除最后一层,并将隐藏层权重作为特征。。。对于图像,这是否仍然有效,或者我们必须从所有层获取权重?关于keras v1.0有了重大的变化。。。我没有看到自动编码器也!酷。可视化是了解特定图层特征重要性的好方法。谢谢你的最新答案。我正在从浅层网络走向深层网络。。。因此有这么多问题!!再次感谢!!