Tensorflow を強化学習でversion2.1を使うとversion1.12よりも遅くなるので原因を確認しました。

結論から述べますと、version2.1は、バッチで学習させるときにはversion1.12よりも若干速いのですが、データを1つづつに分けて学習させる場合ではかなり遅くなるということです。今回のテストだと約6倍も時間がかかりました。

普通の教師あり学習で、後者の方法を使うことはないと思いますが、強化学習では使う場合があります。

modelをsequential で作るか、functional で作るかの違いでも試してみましたが、そこはあまり違いはありませんでした。

以下、私のPCで測定した結果です。batchが100個のデータをバッチで学習させたとき、eachが1つずつ100回学習させたときです。

python 3.7, Tensorflow 2.1
model = sequential, mode = batch: time 0.37 sec
model = sequential, mode = each: time 3.63 sec
model = functional, mode = batch: time 0.35 sec
model = functional, mode = each: time 3.81 sec

python 3.6, Tensorflow 1.12
model = sequential, mode = batch: time 0.48 sec
model = sequential, mode = each: time 0.59 sec
model = functional, mode = batch: time 0.51 sec
model = functional, mode = each: time 0.63 sec

以下、プログラムです。