コンピュータビジョンChainerによる畳み込みニューラルネットワークの実装(2015/10/7)のつづき。今回はMNISTの数字画像認識ではなく、CIFAR-10(2015/10/14)という画像データを使った一般物体認識をやってみた。画像を10個のクラスに分類するタスク。実装にはChainerを使った。MNISTは1チャンネルの白黒画像だったけれどCIFAR-10は3チャンネル(RGB)のカラー画像なので少しだけ複雑になる。CIFAR-10(2015/10/14)でも書いたけれどCIFAR-10の提供データは、各画像サンプルがchannel(3チャンネル)、row(32ピクセル)、column(32ピクセル)のフラット形式3*32*32=3072次元ベクトルの形で格納されている。形式にする必要があるためreshape()して次元を変換している。32))今回は初めてなので畳み込み層とプーリング層が1つずつの簡単な構成で実験した。FCCONVは畳み込み層、RELUはReLU活性化関数、POOLはプーリング層(max-pooling)、FCは全結合層(隠れ層1つ)である。Chainerでは下のようなコードで簡潔に書ける。modelの方には学習によって変化するパラメータがある層だけまとめられている。プーリング層はパラメータがないのでmodelには含まれない。pad=0)は、入力が3チャンネル(RGB)、出力の特徴マップが32チャンネル、フィルタ(カーネル)サイズが3x3、パディングサイズが0であることを意味する。10)は512ユニットから10ユニットへ変換する層を意味する。CIFAR-10は10クラスの画像分類なので出力ユニット数は10になる。畳み込み層ではパディングサイズが0だと出力の特徴マップの画像サイズが入力画像より少し小さくなる。小数点以下切り下げて整数化する演算。今回の例だと入力が3x32x32でconv1によって32x30x30になる。max_pooling_2dのウィンドウサイズが2なので画像サイズは半分になって32x15x15になる。これをフラット化してからフル結合層に入力するためフル結合層のユニット数は32x15x15=7200となる。これがl1の入力ユニット数が7200となっている理由。1000というエラーが出る。これは「フル結合層のユニット数は本当は7200なのに1000になっていて違うよ!」という意味。この構成だとテスト精度で最大67.7%だった。次は畳み込みニューラルネットワークの構成をいろいろ変えたとき精度がどのように変化するか調べてみよう。Network今回は畳み込みニューラルネットワーク。»プロフィールid:aidiary人工知能とその関連分野に興味があります。)はてなブログをはじめよう!aidiaryさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。