2017年11月9日0件のコメントこんにちは。GMOアドマーケティング、機械学習入門者のT.Mです。実際に何か作るにあたって何をしたらよいか調べていたところニューラルネットワークのライブラリであるKerasを知り触ってみました。Learningで学習した内容とKerasドキュメントを参照しながら見ていきたいと思います。KerasについてKerasについては公式ドキュメントを参照ください。TensorFlow上で動く、ニューラルネットワークをより簡単に書けるようにしたライブラリという認識です。Learningでも5章までガッツリと書かれていたMLP(マルチレイヤーパーセプトロン)のサンプルを見ていきます。サンプルソースを読むサンプルソースから引用しながら見ていきます。Kerasのライセンス表記です。num_classes)最初の部分ですが、MNISTのデータをロードし、ニューラルネットワークに取り込めるようにデータを変換しています。Sequential()どのようなニューラルネットワークなのかを定義しています。Sequentialモデルはニューラルネットワークの各層を順番につなげたモデルを表します。add()で層を追加していきます。input_shape=(784,)))最初の層として追加しています。どんな層かというと、Dense()で定義されています。このDenseは、全結合ニューラルネットワークになります。この1行だけで1つのニューラルネットワークを表しています。Learningにも出てきたA・W+Bというニューラルネットワークになります。このDenseの引数を見ると、下記の通りになっています。reluを指定しています。https://keras.io/ja/activations/#relu活性化関数については、この記事も参照ください。input_shape・・・最初の層のときにだけ指定します。入力層の形を指定します。MNISTで扱う28×28=784のデータのことを表しています。keras_mnist_mlp_4Pythonmodel.add(Dropout(0.2))1model.add(Dropout(0.2))ドロップアウトの層になります。Learningの6章にも出てきました。過学習を避けるために出力結果を間引くようになります。引数はレートを指定します。activation='relu'))第2層目のニューラルネットワークです。出力の次元数は512、活性化関数は前回と同じくreluです。keras_mnist_mlp_5Pythonmodel.add(Dropout(0.2))1model.add(Dropout(0.2))またドロップアウトを指定しています。activation='softmax'))最後に出力層として、次元数10(0〜9の数字なので)、活性化関数はSoftmaxを指定しています。ここまでがSequentialモデルで定義したニューラルネットワークになります。metrics=['accuracy'])123model.compile(loss='categorical_crossentropy',optimizer=RMSprop(),metrics=['accuracy'])次に、compileメソッドは訓練の定義をします。https://keras.io/ja/models/sequential/#compileloss・・・損失関数を指定します。ここでは、categorical_crossentropyが指定されています。MNISTのような多クラス分類では、categorical_crossentropyを使用します。optimizer・・・最適化アルゴリズムを指定します。RMSpropを指定しています。Learningには出てこない最適化アルゴリズムです。書籍で出てきた内容としては、SGD、Adagrad、Adamがあります。metrics・・・評価関数を指定します。通常はmetrics=[‘accuracy’]を指定するとのこと。y_test))fitは、ニューラルネットワークの訓練を行います。https://keras.io/ja/models/sequential/#fit第1引数、第2引数・・・入力データとなります。batch_size・・・バッチサイズを指定します。epochs・・・訓練を行う回数を指定します。verbose・・・指定する数値により実行ログの出す内容が変わります。validation_data・・・評価用のデータを指定します。戻り値・・・訓練の損失値と評価関数値が返ってきます。verbose=0)evaluateは、損失値を計算します。https://keras.io/ja/models/sequential/#evaluate第1引数、第2引数・・・評価用の入力データを指定します。verbose・・・進行状況の表示を指定します。戻り値・・・テストデータの損失値を返します。Learningで学習した知識をベースにKerasのドキュメントを参照することでほんの少し読めるようになったと思います。次は自分でニューラルネットワークを作っていきたいです。@gmoap_engineer本ブログで発信される情報は、各エンジニア個人の見解であり、弊社の公式見解ではありません。本ブログに掲載、引用等をしている商品またはサービス等の名称は、各社の商標または登録商標です。その他の事項について一切責任を負いかねます。発表する情報には注意を払っておりますが、公式発表、見解については、弊社WEBサイトおよびプレスリリースなどをご確認ください。GMOインターネットグループにおけるソーシャルメディア運用ポリシーについては次のページをご確認ください。本ブログに掲載のあるソフトウェアのダウンロードは自己責任で御願い致します。ソフトウェアのダウンロードの結果、ご利用者に何らかの損失・損害が生じたといえども、当社ではその責任を負いかねます。本ブログに掲載のあるソフトウェアを扱う際は、各ソフトウェアの公式リファレンスを参照のもとご使用下さい。ソフトウェアの実行の結果、ご利用者に何らかの損失・損害が生じたといえども、当社ではその責任を負いかねます。