1

私はGaussian RBMを実装したいと思っています。そのために、データの平均と単位分散をゼロにしたいのです。私のデータはMNISTデータセットです。データセットは次のリンクから取得されたものです。

http://www.cs.toronto.edu/~hinton/code/makebatches.m にアクセスしてください

以下の方法で実装しましたが、私のデータはNANになります。データを標準偏差で除算するとNANになります。

for epoch = epoch:maxepoch,
fprintf(1,'epoch %d \r',epoch); 
errsum=0;
for batch = 1:numbatches,
fprintf(1,'epoch %d batch %d \r',epoch,batch); 

%START ポジティブ フェーズ

data = batchdata(:,:,batch);

%ゼロ平均と単位分散

data_mean = mean(data,1);
data=bsxfun(@minus,data,data_mean);
data_std = std(data1,[],1);
data=bsxfun(@rdivide,data,data_std);

私はこれを小さな例のセットで試しました.うまくいきます.NANになる理由は何ですか.

これを取り除き、ゼロ平均と単位分散でガウス入力を作成する方法。

4

2 に答える 2

1

GBRBM トレーニングを開始するに、データの平均と分散を正規化することをお勧めします。batchdataこれにより、MATLAB ワークスペースで変数を手動で確認できます。GBRBM のトレーニング中に、学習率が高すぎるとトレーニング/検証エラーとして NaN が表示されることがよくあります。学習率を 0.001 以下に設定すると役立つはずです。

于 2014-07-12T06:36:14.317 に答える
0

「data_std = ...」コードでは、「data」ではなく、未定義の変数「data1」を使用しているようです。

于 2013-12-25T20:05:16.093 に答える