我一直在使用 PyTorch 进行研究,用它来实现新事物似乎很容易。此外,它很容易学习,到目前为止,我对遵循其他研究人员的代码没有任何问题。
但是,我想知道 TensorFlow 是否比 PyTorch 有任何优势。我知道的唯一优势是,它比 PyTorch 稍快。
一般来说,除了性能之外,TensorFlow 是否比 PyTorch 有任何具体的优势,特别是在研究目的方面?
我一直在使用 PyTorch 进行研究,用它来实现新事物似乎很容易。此外,它很容易学习,到目前为止,我对遵循其他研究人员的代码没有任何问题。
但是,我想知道 TensorFlow 是否比 PyTorch 有任何优势。我知道的唯一优势是,它比 PyTorch 稍快。
一般来说,除了性能之外,TensorFlow 是否比 PyTorch 有任何具体的优势,特别是在研究目的方面?
过去我用过TensorFlow(1和2)、Keras和PyTorch,所以我会根据我的经验给出答案。目前,我使用 TF 2 和 Keras(TF 2 附带的版本)。
在我(但不仅如此)看来,TF 1 确实丑陋而痛苦,因为它涉及会话、占位符,而且通常,您需要在执行任何操作(即使是最简单的程序)之前定义计算图。使用 TF 2,您不再需要会话和占位符,这是一个非常大的改进,因为您无需认为首先需要定义计算图,然后将其输入。本质上,在 TF 2 中,您可以编写 TF 代码,并且您几乎可以确定您的 TF 2 代码看起来像任何其他 Python 代码。
TF 和 Keras 有一些 bug,但我认为 PyTorch 也一定有一些 bug(尽管我不记得遇到过它们)。
TF 带有TensorBoard。您还可以轻松使用 Keras 的 TensorBoard。大约一年前,我写了一篇关于 PyTorch 可视化工具的博客文章。当时,这些工具似乎不像 TensorBoard 那样发达,但已经有一些选择。
TF 2 中的调试仍然不完美,但我想说它相对于 TF 1 有所改进(主要是因为样板代码更少)。在 TF 2.0 中调试,我主要使用tf.print
(它的行为类似于 Python 的print
函数),但可能有更高级的工具(例如,我认为 PyCharm 有一个 TF 调试插件),即使我从未使用过它们。TensorBoard 也可以用作调试工具(例如,了解模型的学习方式等)。
PyTorch 的简单性可与 Keras 相媲美。TF 现在自带了集成版的 Keras,针对 TF 进行了优化,所以 TF 代码可以看起来像 Keras 代码一样简单。
总的来说,我的印象是,如果需要,TF 会提供更大的灵活性,但我已经有一段时间没有使用 PyTorch。此外,使用 TF 2.0,代码看起来更简单、更一致并且框架组织得更好。另一方面,PyTorch 可能还是更容易学习(因为它没有 TF 的过去,即还有很多 TF 代码使用 session 等)。
大公司(分别是 Google 和 Facebook)都支持 TF 和 PyTorch,但 TF 更成熟,并且 TF 存在的功能/库对于 PyTorch (AFAIK) 仍然不存在。我怀疑 PyTorch 是否存在 TF 或 Keras 不存在的功能。