どうも、カタミチです。
さて、なんだかバタバタしてて少し間が空いてしまいましたが、今日も「最短コースでわかる PyTorch&深層学習プログラミング」のひとり読書会、やっていきますかねー。
前回で既に、線形回帰の繰り返し計算まで終わっています。あとは結果評価だけ…!というところですね。ということで、見てみましょう。
3-11. 結果評価
まずは、最終的な重みの値と、損失の数値の最初と最後を見てみましょう。
Wは、約1.82あたりですね。で、Bは0.37あたり。どんどんと値が収束していって、最終的にここに落ち着いた…という感じですね。data関数とnumpy関数を噛ませて数値として表示できるようにする、という点が注意点ですかね。
で、損失。こちらは、過程がすべてhistory変数に格納されているので、それを拾って見ています。初期状態で13.4付近だったのが、最終状態では4.7付近まで低下していますね。ひとまず、低下していてヨカッタ。最終状態の呼び出し方に[-1,1]って感じで-1がありますが、-1が最後の項目を表すという性質を使っていますね。
さて、次に学習曲線です。損失が回数とともにどう低下していっているか…?というやつですね。見てみましょう…
どん!
うん、ちゃんと順調に落ちていっていますね。初期状態の数値と最終状態の数値は、グラフにしても先ほどと同じ数値になっているのが分かります(当たり前や)。
ということで、出来上がったモデル(回帰直線)を書いてみましょう。
どん!
おー、5点しかなくてもそれっぽくサマになってますねー。で、このグラフを書いたコードはこんな感じ。
書籍には後半部分しか掲載されておらず、ひとまずそれだけ書いて実行してみた「x_rangeが定義されてないよ!」実行時エラーになってしまいました(汗)
scatterで点を打って、plotで直線を引いてる感じですね。pyplotも、使いこなすとまだまだ色々表現できそうです。
で、これが最終形かと油断していたんですが、よく考えると最初に「データ前処理」をしてましたね。やったのは、データの平均値に引き寄せるって処理でした。これをもとに戻すと…
実行してみましょう…
どん!
できました!
ということで
これで無事に線形回帰問題の例は完了…と、思いきや、まだあと1節残っているようですね。さて、どんな内容になっているのか?次回見てみますかねー。
ではまた。