初手であるCNNを見ていきます。今回対象のコードは下記です。Network)の登場が今現在のディープラーニングの発展のきっかけになったと考えられます。写っている画像の認識(何が写っているのか)を行うことができます。詳細については、下記のリンクを参照してもらえればと思いますが、簡単に言うと、昔は職人技であった画像認識手法やアルゴリズムをニューラルネットワークが大量のデータで学習することで職人技を超えた技術です。(参考リンク)(http://qiita.com/icoxfog417/items/5fd55fad152231d706c2)CNNでは、以下の処理を行って学習を進めます。・畳み込みあらかじめ大量のフィルタを用意。画像を数ピクセル×数ピクセルの小さな画像に分けて、フィルタと掛け合わせてフィルタ済みの画像を生成します。・プーリングフィルタされた画像を圧縮。ある手法としては、数ピクセル×数ピクセルで得られたフィルタ済みの画像の中のもっとも大きな画素値を残す処理があります。この手法によって、様々なフィルタ済みの特徴量を半ば自動的に生成し、ニューラルネットの学習により、どのフィルタがより画像の識別に役に立つフィルタか学習することで、識別率を向上させることができます。どのように実装するのか見ていきます。MNISTデータを題材に学習するので、画像のサイズは28×28ピクセルです。mnist.load_data()</Code>つぎに、取得したデータをイメージ(N番目)×行×列×チャンネルの配列に整形します。畳み込みニューラルベットワークでは、行列(縦横)の関係を使って、より効率的に学習するので、整形が大事です。1)</Code>画素値が0から255になっているので、これを0から1に正規化します。この処理は、第三回と同様です。num_classes)</Code>いよいよ、ネットワークの作成部分です。3×3ピクセルのフィルタを32枚用意します。そのフィルタ後の画像をもとに、3×3ピクセルのフィルタを64枚用意します。プーリング処理として、2×2ピクセルのうち、最大値のみ残すMaxPoolingを行います。これでデータを1/4に減らすことができます。あとは、ドロップアウトをしていますが、これは第三回と同じです。Flattenという処理で、多次元の行列を一次元の配列に整形(整形後は9216入力となる)して、128出力のニューラルネットを構成します。最後に128入力、10出力のニューラルネットワークを構成します。10クラス分類問題なのでソフトマックスを行います。activation=’softmax’))</Code>ちょっと入出力がわかりづらいと感じた時は、model.supmmary()を記述することで、入出力の次元を確認できるので便利です。細かい話ではありますが、最初のConv2Dによって、28×28ピクセルは、3×3を確保するために後ろ2ピクセルを無視して、26×26ピクセルで学習を進める様子を確認できます。(次のConv2Dで24×24ピクセルになります。)最後に学習を行います。ここは第三回と全く同じです。コンパイル関数に、損失関数と最適化手法を選択し、フィット関数で学習データ、検証データを指定し、何回学習させるか指定します。score[1])</Code>CPUのみで学習すると小一時間は学習時間がかかる処理の重さとなります。これで出来上がったモデルは、99.2%を超える精度を出すことができます。ディープラーニングの力ということでしょう。SHIFT特徴量とか過去のものになってしまったんですね。畳み込みフィルタ技術の中に生きているのだと思います。コメントをキャンセルメールアドレスが公開されることはありません。*サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。【社員紹介】2020年1月に入社したTさんにインタビューしました。社員紹介(第四回:入社1年4ヶ月後のMさん)社員紹介(第三回:入社7ヶ月後のYさん)【社員紹介】2018年8月に入社したMさんにインタビューしました。