2019-10-20こしあんTweetPocketTensorFlow2.0+TPUで訓練していて、いちいちマルチデバイスための訓練・Validationのコード書くの面倒くさいなと思ったので、それをいい感じにラップしてくれるデコレーターを作ってみました。「@distributed」とつけるだけで使えます。_decorator使い方・特徴train_on_batchやvalidation_on_batchのような訓練ループの中でバッチ単位で訓練・Validationする関数にデコレートします。対象の関数に「@distributed(引数)」とつけるだけで、分散訓練に対応できます。デコレーターの中身で@tf.functionは入れているので、@distributedを入れればtf.functionはいりません。TF2.0では対応していない、各デバイスのtrain_on_batchでの返り値をconcatして返すという処理も実装してみました。3)という出力になります。損失関数内で計算した値を使いたいときに便利だと思います。公式ドキュメントに載っているようなやり方です。main()これはまぁ悪くはないですが、やはりdistribued用の関数を定義するのが冗長な気がします。0.5734999775886536デコレーターを使う場合このデコレーターを使う場合はこちら。大きいプロジェクトになった場合は、デコレーターとEnumは別ファイルにおいておきimportすればいいですね。デコレーター自体は処理に依存しないのでコピペすればいいので。main()この例では少しコードが長くなってしまいましたが、大きめのプロジェクトになったときに便利だと思います。最初の例ではできなかったこんなプロットもできます。各画像とクラス別の予測確率のプロットです。Commentコメントをキャンセルメールアドレスが公開されることはありません。