Learning前回(2018/2/17)は、アリとハチだったけど、今回はイヌとネコでやってみよう。kaggle-cliというコマンドラインツールを使うと、Kaggleにログインした上でコマンドでデータのダウンロードができるのでとても便利!各種ディレクトリのパスを定義する。'test')下のような感じでデータを解凍。Notebook上で記録しておくのはよい習慣*1。コマンドの前につける。$data_dir訓練画像は25000枚、テスト画像は15000枚。訓練データからランダムに選んだ2000枚をバリデーションデータとする。shuf[i]))PyTorchで読み込みやすいようにクラスごとにサブディレクトリを作成する。unknown最終的にデータはこんな階層構造になる。2.jpgVGG16のFine-tuning前回は、ResNet50を使ったので今回はVGG16でやってみた。出力が1000クラスになっているのでここをイヌとネコの2クラスにしたい。置き換えられないかトライしてみたがこれはダメなようだ。丸ごと置き換える必要があるみたい。上のレイヤの重みはすべて固定した。vgg16.cuda()print(vgg16)データのロードまずデータ変換関数を定義する。訓練用とテスト用を分けたが同じ内容でOK。0.225])])各ディレクトリから画像をロードするDataSetを作成。test_preprocess)下のコードでクラスラベルを確認できる。ラベル1になっていることがわかる。アルファベット順にラベルが割り当てられるのだろう。unknownはラベル0だけどこれはテスト時にしか使わないので問題ない。データをミニバッチ単位で取得するDataLoaderを定義。バッチサイズは128にし、訓練データだけシャッフルする。shuffle=False)1バッチだけデータを描画してみよう。nrow=5)imshow(grid)モデルの訓練optimizerには、更新対象のパラメータだけ渡す必要があるので注意。固定しているパラメータを含むvgg16.parameters()を指定するとエラーになる。Fine-tuningなので学習率を小さめにしたSGDを使う。momentum=0.9)訓練とバリデーションの関数を定義。