2016-05-19 7 views
-2

これは、Coursera機械学習コースの演習4の予測機能のスニペットです。それは、訓練されたニューラルネットワークから予測された数字をpに格納することです。誰かがこれをどうやって説明することができますか?ピクセル強度値のCoursera機械学習コースの数字を認識するこのコードを説明できます

function p = predict(Theta1, Theta2, x) 
    p = 0; 
    h1 = sigmoid(double([1 x]) * Theta1'); 
    h2 = sigmoid([1 h1] * Theta2'); 
    [dummy, p] = max(h2, [], 2); 
    end 

x = 1x784マトリクス。 Theta1 = 100x785マトリックス。 Theta2 = 10x101マトリックス。

私はすでにネットワークを訓練しており、Theta1とTheta2の最適値を得ています。私が知りたいのは、コードの最後の行が順方向に伝搬された値を受け取り、1/2/3/4/5/6/7/8/9/10をpに格納する方法です。どの桁が格納されているかは、予測桁です。

シグモイド関数:最高有するAI indecesで

function g = sigmoid(z) 
g = 1 ./ (1 + e.^-z); 
end 
+2

単純ですあなたの質問をより具体的にする。現時点では、「どのようにニューラルネットワークを手書きから数字を認識させるか」という言い方が広がっています。そのコードスニペットについてより具体的なものを尋ねるためにあなたの質問を書いてください。また、スニペットは 'x'と' Theta1'が何であるかについての情報なしで何の意味もないので、残りのコードを提供します。 – Dan

答えて

1

最後の行は、単に、MATLAB /オクターブで、最高値とニューロンのインデックスを返す

[M, I] = max(A, [], dim) 

格納寸法dimの間の値。あなたのケースでは、h2は、各出力ニューロンの活性化を持っており、あなたのニューラルネットワークの構築から - 分類は、あなたは間違いなく、関数の残りの部分を提供する必要があり、最高値の1のインデックス、

cl(x) = arg max_i f_i(x)