AugmentationしながらCIFAR-10を分類するサンプルです。Augmentationはtf.dataでやるのがポイントです。訓練コード学習曲線の確認ColabノートブックTensorFlowを2.Xに上げるまずは、ランタイム切り替えで「TPU」を選択しましょう。現在(2019/10/16時点)のColabではTF1.X系が入っているので、2.X系にアップデートします。これはTF2.0.0にアップデートするケースです。2.X系のバージョンはだんだん上がっていくので順次値を変えましょう。tensorflow==2.0.0TPU使用のための下準備GPUやCPUは何も準備要らないのに対し、TPUは使用開始のために下準備(おまじない)が必要になります。後々使うのは「strategy」という変数なので、これを最初に実行しておきましょう。訓練コードCIFAR-10を10層モデルで訓練するプログラムです。Cropを入れています。fp)オプティマイザはモメンタムで、学習率は0.1、バッチサイズは128、60エポックと85エポックで学習率を1/10にしています。1点注意なのが、tf.dataをfitに入れる場合はデータが一周するとデータセットが終わって訓練が止まってしまうためrepeat()を入れましょう。tf.dataのデータセットをfitに食わせるというのは昔のKerasではありませんでしたが、TF2.X系以降は1つの選択肢になりました。便利なのでtf.dataに慣れましょう。repeat()については、fit内のvalidationについてはどうも入れなくてもいいようです。train側のデータセットのみrepeatを入れた所正常に動きました。データセットをrepeat()で無限ループさせる場合は、「steps_per_epoch」で1エポックあたりのステップ数を指定しましょう。ラベルの値はもとのuint8だとTPUの訓練に失敗する(この記事を書いた時点)ので、Floatにキャストするのが無難です。訓練がうまくいっているか学習曲線を描いてみます。学習率の減衰あたりが正常に動作しているのか気になりますね。accが大きく上がっているのでうまくいっています。いつの間にかHistoryに学習率を記録するようになったらしいです(いいこと)。CIFARをTPUで動かせるということは、NNの教師あり学習が一通りできそうなので、TF2.0+TPUで遊ぶと楽しそうです。自分もGPUが埋まっているときにTPUで遊んでみたいと思います。Commentコメントをキャンセルメールアドレスが公開されることはありません。