UFLDL教程の答え(2):Exercise:Vectorization


教程の住所:http://deeplearning.stanford.edu/wiki/index.php/UFLDL%E6%95%99%E7%A8%8B
練習住所:http://deeplearning.stanford.edu/wiki/index.php/Exercise:Vectorization
matlabベクトル化はまだ比較的容易に実現されており、マトリクス化された量子化の数学式には基本的に直接対応することができる.
 
注意:いくつかの数学式の合計は、実際には行列の乗算に隠れています.
Xは64*10000の行列、64次元の特徴、10000個のサンプルであり、平均値が0の場合、Xの共分散行列を式で計算すると、直接にsigma=x*x'/size(x,2)で求められ、サンプル1からmまでの求めれば、X*X'に暗黙的に含まれる!
 
1.本題に入る:
私はチュートリアルを全部読んでから練習しますので、(1)のプログラムはもうベクトル化されたコードです.練習(2)は基本的に変更する必要がありません.教程に従ってパラメータを設定し、必要なmファイルをコピーすればいいです.
visibleSize = 28*28;   % number of input units 
hiddenSize = 196;     % number of hidden units 
sparsityParam = 0.1;   % desired average activation of the hidden units.
                     % (This was denoted by the Greek alphabet rho, which looks like a lower-case "p",
		     %  in the lecture notes). 
lambda =3e-3;     % weight decay parameter       
beta = 3;            % weight of sparsity penalty term       

%%======================================================================
% Change the filenames if you've saved the files under different names
% On some platforms, the files might be saved as 
% train-images.idx3-ubyte / train-labels.idx1-ubyte
images = loadMNISTImages('train-images.idx3-ubyte');
labels = loadMNISTLabels('train-labels.idx1-ubyte');
patches = images(:,1:10000);
% We are using display_network from the autoencoder code
display_network(images(:,1:100)); % Show the first 100 images
disp(labels(1:10));
注意が必要なのは、今回使用したデータセットは前回よりずっと大きくて、すべてのステップ3勾配検査で一番いい注釈が取れます.そうでないと遅くなります.
train.mを実行します.効果図は以下の通りです.UFLDL教程答案(2):Exercise:Vectorization_第1张图片.
左は教程上の結果で、中間と右は2回私の運行結果です.
UFLDL教程答案(2):Exercise:Vectorization_第2张图片
2.結果についての議論:
ここで印刷されたのはW 1であり、出力層と隠蔽層との間の接続重み付けであり、入力は28*28=784次元であり、隠蔽層は196であり、196次元で784次元のデータを表し、低次元は高次元を表し、特徴を抽出することを意味する.(196=14*14です.上の図は14*14の小さい正方形からなります.小さな正方形は28*28ピクセルからなります.)
ここでは、小さな正方形は、入力層784のニューロンと隠し層のあるニューロンとの接続重み付けを表しています.ここには14*14=196の小さな正方形があり、196の隠蔽層ニューロンがあります.