如何在卷积 RBM 中输出特征?

How to output features in a Convolutional RBM?

阅读 this text 我了解到我可以通过仅激活一个隐藏单元并从隐藏单元中对可见单元进行 Gibbs 采样来创建人们所说的 "reconstructions"。

但现在我正尝试在 python 中实现一些 Convolutional Restricted Boltzmann Machines。我的计划是坚持第 3.2 节中介绍的版本(所以,请注意,我 打算实施卷积深度信念网络),并且只插入一次概率最大池化部分工作正常。

为了检查它是否正常工作,我想像文章中介绍的那样创建 "features"(例如,图 3)。第一层学习到的特征与其他类型网络学习到的特征非常相似;但我不确定他们是如何创建这些功能的。我不清楚那些学到的 "features" 是否是过滤器的权重,或者我是否应该通过打开某个过滤器的所有隐藏单元以某种方式创建重建。我也不确定第 3.6 节与我的更简单版本(我什至没有概率最大池化)有多相关。

(我都试过了,我的结果看起来仍然完全不同,我不确定这是我代码中的错误还是我只是做错了什么)

有什么帮助吗? (我在互联网上随机找到了 this code,但我对 Matlab 语法仍然是新手,还无法找出他们是如何创建重建的——假设他们这样做了)

嗯,是的,我已经在想为什么他们没有在本文中提供有关绘制更高层的基础的详细信息。

为了可视化第一层的特征(图 3,上图),仅绘制各个隐藏单元的权重(即过滤器)就足够了。如果您的结果看起来不同,可能有很多原因。除了代码中的错误之外,任何训练参数都可能使过滤器看起来再次不同。请注意,对于自然图像,您需要高斯单位。

如果你想要一些 python 代码开始,你可以检查这个框架: https://github.com/OFAI/lrn2

如果您曾经想可视化更高层中发生的事情,本文可能会有所帮助(其中第 2.4 节也在上述框架中实现(在堆栈下。py/NNGenerative): http://www.dumitru.ca/files/publications/invariances_techreport.pdf

希望对您有所帮助!