連載
» 2018年11月20日 05時00分 公開

ニューラルネットワークライブラリTensorFlow/Kerasで実践するディープラーニングPythonで始める機械学習入門(8)(3/3 ページ)

[加藤公一,シルバーエッグ・テクノロジー]
前のページへ 1|2|3       

定義したネットワークの構造の確認

 summaryメソッドを使って定義したネットワークの構造を確認できます。

 各層の出力のサイズとパラメーターの数が表示されました。最適化アルゴリズムと損失関数の指定はあやめデータの場合と変わらず、次のように指定します。

学習の実行

 次に、学習させます(この実行には数分かかります)。

 こうして学習させたものをファイルに保存することもできます。「HDF5」という形式で保存します。

 このときに次のようなエラーが出ることがあります。

ImportError: `save_model` requires h5py.

 このときは「h5py」(HDF5 for Python)ライブラリをインストールします。シェルから次のように入力するとよいでしょう。

> pip install h5py

 次に保存したファイルを読み込んでみます。

 変数model_loadedにファイルから学習済みモデルが読み込まれました。

実行結果

 テスト用データに適用してみて、どのくらい当てることができるかを調べてみます。

 約66%の正解率になりました。では実際に正解したデータと不正解のデータの中身を見てみましょう。まずは正解データの最初の30個をラベル付きで可視化してみます。

 次に、不正解データをラベル付きで表示してみます。ここで付いているラベルは間違って付けたラベルです。

説明用のサンプルとしてはここまで

 以上、cifar10の画像データの分類をTensorFlowで実装してみました。ここでの実装は説明のためシンプルなものを採用し、計算時間もそれなりに短時間に終わるようにしているため、正解率は約60%台にとどまっています。実際にこれ以上の精度を出そうとするとネットワーク構造やアルゴリズムをさらに工夫した上で計算リソースもそれなりに消費する(つまり長時間計算するかまたはGPUのようなパワフルな装置を利用する)ことになります。

 最高精度を出したアルゴリズムがこのページで確認できますが、2018年10月の本稿執筆時点だと2015年に96.53%の正解率を達成したのが最高記録として記載されています。どのようなモデルで、そのような記録を達成できたのかについては、該当ページから論文へのリンクが貼ってありますので参考にしてください。

まとめ

 今回は、あやめデータの分類と画像の分類を例に、TensorFlow/Kerasの使い方を説明してきました。

 ディープラーニングはこれ以外にも多くの分野に適用できますが、画像認識は典型的な例の一つであり、ディープラーニングの威力をすぐに感じることができる分野になっています。

 それぞれのアプリケーションに対して、どのようなモデル(ネットワーク)を構築すべきかについては、さまざまな論文や書籍で情報を得て利用することになります。

前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。