AI研究所 - AI(人工知能)に脅かされないために、AI(人工知能)を作る側の人間になる -

HOME  >  Azure MLでCNN(畳み込みネットワーク)を使ってディープラーニングさせる方法

公開日:2017.07.24 [最終更新日]2017.10.23

Azure MLでCNN(畳み込みネットワーク)を使ってディープラーニングさせる方法

カテゴリー: AI(人工知能)の作り方

こんにちは、AI研究所のマサミです。
今回は、Azure ML(Azure Machine Learning)を使って、画像認識に特化したディープラーニングのひとつであるCNN(畳み込みネットワーク)の作り方を紹介したいと思います。

Azure MLの使い方は以前の記事「プログラミング不要!? AI(人工知能)の作り方【Azure ML – 機械学習】」をご参照ください。

機械学習に使用するデータはAzure MLのサンプルデータ「MINST Test 10k 28×28 dense」を使用します。
「MINST Test 10k 28×28 dense」の中には28px×28pxの手書きの数字画像(0〜9まで)を数値化したデータが10,000個入っています。

作成するCNNは以下です。

111

Azure MLの完成キャンバスイメージは以下です。

333

機械学習のモジュールには「Multiclass Neural Network」を使います。
「Multiclass Neural Network」はプロパティの設定で「Hidden layer specification」を「Custom definition script」に設定することで、Net#言語を追加できるようになりCNNを作成することができます。

Net#は、Microsoft が開発した言語で、ニューラルネットワークアーキテクチャを定義するために使用されます。

今回の設定値ですが、入力層のノード数は、画像が28px × 28pxなので784になります。
畳み込み層のそれぞれの設定値は「フィルタサイズ:5px × 5px」、「スライド量:1」、「フィルタ数:5」、「パディング:有り」で設定しています。
プーリング層の設定値はそれぞれ「フィルタサイズ:2px × 2px」、「スライド量:2」で設定しています。
また、プーリング層は「max pool」または「mean pool」のどちらかを設定することができますが、今回は「max pool」を設定しました。

Net#のプログラムコードは以下のようになります。


const { T = true; F = false; }

//入力層
input Picture [28, 28];

//畳み込み層
hidden C1 [5, 28, 28]
  from Picture convolve {
    InputShape  = [28, 28];
    KernelShape = [5, 5];
    Stride      = [1, 1];
    Padding     = [T, T];
    MapCount = 5;
  }

//プーリング層
hidden P1 [5, 14, 14]
  from C1 max pool {
    InputShape  = [5, 28, 28];
    KernelShape = [1, 2, 2];
    Stride      = [1, 2, 2];
  }

//出力層
hidden H [100]
  from P1 all;

//ソフトマックス
output Result [10] softmax
  from H all;

CNNをプログラミングで書くと複雑なコーディングが必要ですが、Azure MLだとこれだけの設定だけで作れてしまいます!
皆さんも一度試してみてください!

タグ:


参考になったら「いいね!」と「シェア」をお願いします!!

このエントリーをはてなブックマークに追加
AI(人工知能)入門セミナー開催中
AI(人工知能)入門セミナー

AI入門ブログの中の人

AI研究所 研究スタッフ
通称:マサミ
アメリカ・サンフランシスコにある情報メディアの専門学校を卒業。大手金融会社での事務経験を経て、2016年9月よりAI研究所に入所。見習い研究員として、AI技術を日々勉強中。

LINE@

Facebookページ