暇人日記

アラフォーおっさんのコーセラの機械学習の課題を解こうと頑張っています!

Week4のex3_nn.mのおまけパートを読み込んでみる

Week4の課題にはおまけのようなパートがついていたので、

読み込んでみたいと思います。

 

ex3_nn.mを実行すると最後にこういう文がでてきます↓

f:id:omoshiroamericanews:20200410221652p:plain

そしてFigure1に数字が1文字でてきます↓

f:id:omoshiroamericanews:20200410221822p:plain

 

このようになっているのex3_nn.mの最後にあるこの部分ですね↓

 

f:id:omoshiroamericanews:20200410221414p:plain

 

1つ1つ読んでみたいと思います。

 

まず↓ですね。

rp = randperm(m)

 

randpermは何の機能かと思ったので、調べてみました↓

f:id:omoshiroamericanews:20200410222630p:plain

 

ランダムに数字を返してくれそうなので、10で実験してみました。

f:id:omoshiroamericanews:20200410222741p:plain

やはり、10の数字がランダムに並びました。

 

rp = randperm(m)

ではmが5000なので,rpは5000の数字がランダムに並んでいるということですね。

実際に見てみます。

f:id:omoshiroamericanews:20200410223233p:plain

やっぱり5000の数字がランダムに並んでいそうです。

 

次が↓です。

for i = 1:m

これはループですね。mは5000なので1から5000までのループですね。

 

fprintf('\nDisplaying Example Image\n')

はDisplaying Example Imageが表示されるということですね。

 

f:id:omoshiroamericanews:20200410224318p:plain

なるほど、確かに表示されています。

 

次に↓をみます。

displayData(X(rp(i), :))

まず、

X(rp(i), :)

をみてみます。

 

最初は1なのでrp(1)をみてみます。

f:id:omoshiroamericanews:20200410224703p:plain

ということは、X(rp(i), :)=X(4060, :)ですね。

 

これが何を意味するか確認してみます。

f:id:omoshiroamericanews:20200410225052p:plain

 

なので、X(4060, :)はXが5000X400のうちの4060番目を一列抜き出した形ですね。

実行してみました。

f:id:omoshiroamericanews:20200410225240p:plain

 

f:id:omoshiroamericanews:20200410225302p:plain

やはりそうですね。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番目の列の予測は何かということになります。

 

実行すると↓の数字が出ています。

f:id:omoshiroamericanews:20200410230047p:plain

pが8なので4060番目の予測は8になります。

Fは確率なので↓でいうところの一番大きい数字が『8』だったということになります。

f:id:omoshiroamericanews:20200328172148p:plain

 

『8』で合っているかどうか知りたかったので、

実Sample;yの4060番目を見てみました↓

f:id:omoshiroamericanews:20200410230312p:plain

合ってました。さすが精度97.5%ですね。

 

読み進めていきます。

f:id:omoshiroamericanews:20200410230522p:plain

というのが出てきました。

 

ex3_nn.mを実行すると最後に↓が出てくるのですが、これは↑のせいということですね。

f:id:omoshiroamericanews:20200410230644p:plain

 

if s=='q'

  break 

end 

なので

qを入れたらループをストップさせる仕組みになっています。

Enterを入れるとqじゃないからストップがかからず

i=2へ進むという仕組みになっています。

 

今回はここまでです。また次回頑張ります!