chainerでsin関数を近似してみた~~入門~~

理論についてはチョコマカとあちこちで齧っていたけれどフレームワークを使ったことがなかったのでchainerを使ってみたというだけの話です。
 sin関数を近似した理由は、まず最初はフィッティングでしょという主観と、調べてみたら意外と苦戦している人がいるということと、簡単そうだということです。
 なお、今回は以下のサイトのコードをほぼそのまま使用しています(公式のチュートリアルに沿って実装するとこのようになると思われます)。特に今回は、エポック数やバッチサイズはいじっていないです。
qiita.com

 まずは何も考えずにx座標の値域を[0,2π]にして、train_dataをsin関数で生成してみました。

f:id:gasin:20170218201404p:plain

 そこそこですが、あまりうまくいってませんね。
 それではということで層を一つ増やして、1次元→10次元→20次元→1次元となるようにしました。

f:id:gasin:20170218201411p:plain

 うまくいってますね。ピッタリ重なりすぎてinput dataが見えていません。
 やっぱり入力データにも誤差が欲しいよねということで適当にランダムに誤差を発生させてやってみました。

f:id:gasin:20170218200043p:plain

 うまくいってますね。ニューラルネットすごい。
 
 サークルでchainer使って何かしらやろうという動きがみられるのでもうちょっとchainerに詳しくなってコミットできるようになりたいです。(春休み忙しい)