Recognizing CIFAR-10 images with deep learning (p.122)

$32 \times 32$ の大きさの 3 channels (RGB) 画像 60,000 枚を10クラスに分類する問題。 50,000 枚がtraining 用で、10,000枚がvalidation 用。

https://www.cs.toronto.edu/~kriz/cifar.html

[自習] CIFAR-10 のデータをロードする

なぜか本では tensorflow.kera.datasets.cifar10 にデータがあることが明記されていない。 次のようにしてデータを用意できる。

(注釈)本に記載されているコードは抜粋であり、ネットからダウンロードできるソースコードには記述されていると本 p.123 に書いてあった。

[自習] CIFAR-10のデータをグラフィック表示する

training 用のデータの最初の10個を表示してみる。

Improving the CIFAR-10 performance with a deeper network (p.125)

複数の畳み込み操作を行う、より深いネットワークを用いると性能を改善できる。

[自分へのメモ] データをtraining 用と test 用に分けている。validation 時にtest用データをそのまま使っているが、それでいいのだろうか? batch_size を 32 (test時) → 128 (validation時)と変更はしているが。

[自分へのメモ] コードの中で、平均 (mean) や標準偏差(std) を計算するのに axis=(0,1,2,3) を指定しているが、これは全軸なので、全てのデータを使って計算し一つの値を返すと思われる。

[自習] numpy.mean で複数のaxisを指定した場合の動作

全部の軸を指定すると、ひとつも指定しない場合の動作と同じ(全体の平均を取って、1つの数字を返す)になるようだ。

data augumentation を用いて CIFAR-10の性能を改善する (p.128)

回転 (rotation), 拡大・縮小 (rescaling), 水平方向や垂直方向の折り返し (horizontal or vertical flip), 部分拡大 (zooming), チャネルシフト (channel shift) などの変換を加えて、データを増やす方法が data augumentation である。

[自習] logs43 の学習経過を tensorboard で確認する。

  1. コマンドプロンプト上でtensorboardを起動する。
  2.     cd ch04
        tensorboard --logdir ./logs43
        
  3. ブラウザを起動して http://localhost:6006 にアクセスする。




Predicting with CIFAR-10

モデルとその重みを保存したので、ダウンロードしてきたソースコードの 'Chapter 4/' にある画像に適用してみる。

[自分へのメモ] cat.jpg 以外の画像は RGB フォーマットだが、cat.jpg はRGBAフォーマットなので配列にcat.jpgを含めないこと。 そうしないとimgs = np.array(imgs) / 255のコードでエラーを起こす。

Chapter 4/ の下にある画像の次元
(103, 143, 4) cat.jpg
(536, 640, 3) cat-stainding.jpg
(480, 640, 3) dog.jpg
(640, 598, 3) steam-locomotive.jpg



[自分へのメモ] .json や .h5 が GoogleDrive 上にあると、読み込みに失敗して、以下のコードで正しく動作できないようだ。