Tensorflow2.0 训练:model.compile vs GradientTape

Tensorflow2.0 training: model.compile vs GradientTape

我开始学习 Tensorflow2.0,我感到困惑的一个主要原因是什么时候使用 keras-like model.compile vs tf.GradientTape训练模型。

在用于 MNIST 分类的 Tensorflow2.0 教程中,他们训练了两个相似的模型。 One with model.compile and the other with tf.GradientTape.

抱歉,如果这是微不足道的,但你什么时候使用一个而不是另一个?

这确实是一件 case-specific 的事情,这里很难给出一个明确的答案(它可能也接近于“opinion-based”)。但总的来说,我会说

  • "classic" Keras 界面(使用 compilefit 等)允许快速轻松地构建、训练和评估标准模型。但是,它非常 high-level/abstract,因此不会给您太多 low-level 控制权。如果您正在实施具有 non-trivial 控制流的模型,这可能很难适应。
  • GradientTape 让您完全 low-level 控制 training/running 模型的所有方面,允许更轻松的调试以及更复杂的架构等,但您需要编写更多compiled 模型会向您隐藏的许多事情的样板代码(例如训练循环)。尽管如此,如果您从事深度学习研究,您可能大部分时间都在这个级别上工作。