chainerでニューラルネットワーク簡単実装(初心者向け)2018/02/222020/04/14chainerでニューラルネットワーク簡単実装(初心者向け)Pythonライター:古澤嘉啓TwitterFacebook当記事では、chainerというPythonのライブラリを用いることでニューラルネットワークが簡単に実装できることをご紹介したいと思います。初心者向けの記事ということで、一番オーソドックスな普通のニューラルネットワークの実装を目指します。そのまま使えるプログラム(Python3系)をご用意いたしました。当記事では例として、こちらのcsvファイル(→sampleNN.csv)を使います。以下がデータの形です。)から5列目(病気)であるかどうかを予測したいと思います。1が病気有りで、0が病気なしです。(データはこちらで独自に作ったものであり、実在するものではありません。まとめ学習のサンプルプログラム以下が、chainerによるニューラルネットワークのサンプルプログラムになります。8割目から10割目まで#ニューラルネットワークの構築。df.iloc[int(N*trainPro/10):int(N*testPro/10),:]#データの目的変数を落としてnumpy配列にする。:-1].astype(np.float32))#目的変数もnumpy配列にする。shuffle=False)#モデルを使う準備。L.Classifier(MyChain())#最適化手法の設定。今回はAdamを使ったが他にAdaGradやSGDなどがある。str(resultFn))大雑把な説明はコメントアウトしてプログラム内に書いていますが、以下で詳細な説明も加えていきたいと思います。モデルの設定まず、クラスMyChain#ニューラルネットワークの構築。oの部分ではニューラルネットワークのノード数や活性化関数の設定を行なっています。今回は入力層、中間層2層、出力層の全4層構成で活性化関数にはシグモイド関数を採用しています。入力層は今回の場合、説明変数が4つなので4、出力層は2値分類なので2としました。中間層は適当に800,400としています。入力層、出力層の数をデータから自動で取得しているため今回は、ノード数に変数を使っていますが、以下のように書いてるのと同じことです。2),)より深いネットワーク(ディープラーニング)にしたい場合は、ここで層の数を増やしましょう。学習用データと検証用データに分ける以下の部分で、学習用データと検証用データに分けています。df.iloc[int(N*trainPro/10):int(N*testPro/10),:]今回は、データの前8割を学習に使い、残りの2割を検証に使っています。この他にランダムに分ける手法などもあります。データを分けることによって、学習の結果と予測の結果を同時に確認できるというメリットがあります。これは過学習防止などに繋がるので分けるのは必須です。32ビットのnumpy配列に変換chinerに学習させるときにデータをそのままでは学習ができません。64ビット配列などにも対応していないので、かならず32ビットのnumpy配列に変換して入力しましょう。上記のプログラムを回した結果、以下のようになりました。最初は、ほとんど変わらず。400回目付近で98%に。学習成功まで、だいぶ学習回数を費やしました、、。ニューラルネットワークの学習の効率はデータや入力の仕方、ネットワークの形などによって変わってきます。その辺の設定を調整すれば、より効率の良い学習を目指すことが出来ます。model)で保存することができます。model)で取り出すことが出来、model.predictor()で新しい入力データを与えることで予測に使えます。以下に予測のサンプルプログラムを掲載いたします。L#モデルの形を設定。こちらは、学習させた時と同じ形にする。#データの行数#データの正規化。学習時におこなったものと同じものを行う。correctCount/Nprint("データ数:",N)print("正解数:",correctCount)print("正答率:",correctRate)#結果をcsvファイルへ出力result.to_csv("samplePredict.csv",index=False)こちらのプログラムではターミナル上に簡単な正答率を出力して、最終的に真の値と予測値をcsvファイルに出力するというものです。まとめいかがでしたでしょうか。Chainerを使えば比較的直感的な記述で簡単にニューラルネットワークを実装できることがお分かりいただけたかと思います。層を深くして、ディープラーニングにしたい場合はMychainで調整すれば簡単に出来ますし、最適化手法の変更も非常に簡単なので、ニューラルネットワークの実装初心者には非常にオススメです。掲載してるプログラムで何か分からないことがあればコメントいただければと思います!最後までお読みいただきありがとうございました。G検定を取得するメリットを解説!最弱オセロを初めて攻略した天才オセロ高校生。TrendCOMMENTコメントを残すコメントをキャンセルメールアドレスが公開されることはありません。コメント*お名前*メールアドレス*プライバシーポリシーはこちら上に表示された文字を入力してください。