为什么将官方 Keras mnist 示例非常简单地移植到 tensorflow 2.x 会导致准确性大幅下降?

Why does very simple port of the official Keras mnist example to tensorflow 2.x result in massive drop in accuracy?

这是 Keras 文档中的 mnist 示例: https://keras.io/examples/mnist_cnn/

我把它放到 google colab 中,在 Tensorflow 1.x 下,它表现得非常好: https://colab.research.google.com/drive/15NW-lXhRUxqSCCygVxddXCo5ID7yF2iL

我做了非常简单的更改,使其在 TF-2.x 下执行: https://colab.research.google.com/drive/1ul-eFn1XRe9ta3cu5vHchaa4DxStRda_

它完全碾压性能!精度像石头一样下降!

我做错了什么?

区别在于优化器。 tf.keras.optimizers.Adadelta 使用 0.001 的学习率。 keras.optimizers.Adadelta 使用 1.0 的学习率。

检查 keras.optimizers and tf.keras.optimizers.Adadelta 了解更多详情。特别是,Tensorflow 页面提到 Adadelta 的学习率应该为 1.0 以匹配原始论文。