CIFAR-10のデータが取得できたのは前回わかった。そうなったら、やはりいち早くディープラーニングをやってみたい。
一番てっとり早いのは、プログラムを書かないことだ。
ということで、横着なことを考えた。
今までMNISTのプログラム train_mnist.py をいじってきた。
ならば、このプログラムをちょっと変更するだけで、CIFAR-10に対応することはできないだろうかと考えるのが自然であろう。
そして、頑張らない作業をやった。
そして、diff がこれだけだ。
CIFAR-10$ diff ../mnist/train_mnist1.py train_cifar1.py
53c53
< parser.add_argument('--number', '-n', type=int, default=60000,
---
> parser.add_argument('--number', '-n', type=int, default=50000,
77c77
< train, test = chainer.datasets.get_mnist()
---
> train, test = chainer.datasets.get_cifar10()
CIFAR-10$
変更は、たった2個所である。
学習データが60000から50000に変更になったので、デフォルトの値を変えた。
何も指定がないときは、実際のデータのサイズに自動的に合わせるようにすれば、この変更は不要になる。
そして、データの取得先の変更を、chainer.datasetsに用意されているメソッド get_mnist() を get_cifar10() に変更した。
さすがこの変更はしないと、無理である。
たったこれだけの変更で、プログラムが動くであろうか。
MNISTは、28×28のグレースケールの画像である。
CIFARは、32×32のカラーの画像なので、32×32のR,G,Bのデータが入っていて、3x32x32の画像である。
これが、上記の最高に手抜きした変更で動くのであろか。
相当疑問である。
CIFAR-10$ python train_cifar1.py -g 0
GPU: 0
# number: 50000
# units: [1000, 1000]
# Minibatch-size: 100
# epoch: 20
結果は次回のお楽しみ
このあと予想されることは、
- エラーが起きて、止まってしまう。
- とりあえず動くが、意味不明な結果がでる。
- ちゃんと動いて、それなりの学習が行われたことが分かる。
さて、どれでしょう。