1

MATLAB でガウス入力ベースの RBM を実装しています。

vi次元は 100*784、w次元は 784*500、sigma次元は 1*784 です。

p(h|v)= sigmoid(cj+wij*vi/sigma^2). 掛けると寸法誤差が出ますw*v/sigma^2。以下のように実装しましたが、

poshidprobspart = bsxfun(@rdivide,data,sigmas.^2);
poshidprobs = 1./(1 + exp(-((vishid * poshidprobspart) + repmat(hidbiases,numcases,1))));

コードのエラーの原因は何ですか

4

2 に答える 2

0

次の方法で実装すると、正常に動作します。

neghidprobspart1=bsxfun(@rdivide,negdata,sigmas.^2);
neghidprobspart2=vishid'*neghidprobspart1';
neghidprobs  =1./(exp(-(neghidprobspart2'+repmat(hidbiases,numcases,1))));                                                            
于 2013-11-23T23:23:40.547 に答える