私は MATLAB でプログラミングしており、グレースケール画像のような実数値の入力で RBM を使用したいので、ヒントンがこの記事で述べたことに従うようにしました。
画像は [0, 255] の整数値を持ち、[numImages x numPixel] の行列 D に格納されます。そこで、データの前処理を開始しました。
すべての値が[0、1]になるようにデータセット全体をスケーリングしました
D = D / 255;
すべての画像ですべてのピクセルの平均がゼロになるようにしたので、マトリックスのすべての列からその平均値を減算しました
imgMean = mean(D); % row vector D = D - repmat(imgMean, rows, 1);
データセット全体をその標準偏差で割って、すべてのピクセルが単位分散を持つようにします。
D = D / std(D(:));
しかし、画像をプロットしようとすると、多くの値が負になり、ゼロにクリップされるため、結果は明らかに非常に暗くなります。
これでよろしいですか、それとも前処理を間違えましたか?