Week4の課題にはおまけのようなパートがついていたので、
読み込んでみたいと思います。
ex3_nn.mを実行すると最後にこういう文がでてきます↓
そしてFigure1に数字が1文字でてきます↓
このようになっているのex3_nn.mの最後にあるこの部分ですね↓
1つ1つ読んでみたいと思います。
まず↓ですね。
rp = randperm(m)
randpermは何の機能かと思ったので、調べてみました↓
ランダムに数字を返してくれそうなので、10で実験してみました。
やはり、10の数字がランダムに並びました。
rp = randperm(m)
ではmが5000なので,rpは5000の数字がランダムに並んでいるということですね。
実際に見てみます。
やっぱり5000の数字がランダムに並んでいそうです。
次が↓です。
for i = 1:m
これはループですね。mは5000なので1から5000までのループですね。
fprintf('\nDisplaying Example Image\n')
はDisplaying Example Imageが表示されるということですね。
なるほど、確かに表示されています。
次に↓をみます。
displayData(X(rp(i), :))
まず、
X(rp(i), :)
をみてみます。
最初は1なのでrp(1)をみてみます。
ということは、X(rp(i), :)=X(4060, :)ですね。
これが何を意味するか確認してみます。
なので、X(4060, :)はXが5000X400のうちの4060番目を一列抜き出した形ですね。
実行してみました。
やはりそうですね。1X400のベクトルになっています。
displayData(X(rp(i), :)の『(X(rp(i), :)』は分かりました。
dipplayDataは1X400のベクトルを20X20のピクセルで絵にする関数でしたので、
これで1文字数字が出ていたのだと思います。
pred = predict(Theta1, Theta2, X(rp(i),:))の 『predict(Theta1, Theta2, X(rp(i),:))』は
0-9のどれかを予想するものでした。
i=1のときは4060番目の列の予測は何かということになります。
実行すると↓の数字が出ています。
pが8なので4060番目の予測は8になります。
Fは確率なので↓でいうところの一番大きい数字が『8』だったということになります。
『8』で合っているかどうか知りたかったので、
実Sample;yの4060番目を見てみました↓
合ってました。さすが精度97.5%ですね。
読み進めていきます。
というのが出てきました。
ex3_nn.mを実行すると最後に↓が出てくるのですが、これは↑のせいということですね。
if s=='q'
break
end
なので
qを入れたらループをストップさせる仕組みになっています。
Enterを入れるとqじゃないからストップがかからず
i=2へ進むという仕組みになっています。
今回はここまでです。また次回頑張ります!