How to output features in a Convolutional RBM?

时间:2016-07-11 20:15:46

标签: python feature-extraction rbm

Having read this text I learnt that I can create what people call "reconstructions" by turning only one hidden unit active and Gibbs sampling the visible from the hidden units.

But now I am trying to implement some Convolutional Restricted Boltzmann Machines in python. My plan is to stick to the version presented in Section 3.2 (so, notice, I don't intend implement the Convolutional Deep Belief Network yet), and only insert Probabilistic Max-Pooling once that part is working.

To check that it is working, I wanted to create "features" like those presented in the article (e.g., figure 3). The learned features of the first layer resemble a lot those features learned by other types of networks; but I am not sure how they are creating those features. It is not clear to me if those learned "features" are the weights of the filters, or if I should somehow create a reconstruction by turning on all hidden units of a certain filter. I am also not sure how relevant that section 3.6 is to my simpler version (in which I don't even have Probabilistic Max-Pooling).

(I tried doing both and my results still look completely different, and I am not sure if it is a bug in my code or I am simply doing something wrong)

Any help? (I found this code randomly in the internet, but I am still new to Matlab syntax and couldn't not find out yet what they do to create reconstructions -- supposing they do)

1 个答案:

答案 0 :(得分:0)

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

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

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

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

希望有所帮助!