如何确定神经网络是否具有静态计算图?

数据挖掘 神经网络 张量流 喀拉斯 火炬
2021-10-03 20:06:35

我正在研究从研究论文中实现一些 神经网络。但是,我担心应该使用哪个框架,因为我不确定网络是形成静态计算图(使它们适合 TensorFlow/Keras)还是动态的(使它们更适合 PyTorch)。

确定网络是否需要动态计算图有哪些经验法则?

1个回答

我相信目前最著名的库的实现将允许您实现遇到的任何网络。所以归结为品味和实用性方面。

至于根据您要创建的网络决定框架;如果网络具有在训练期间有条件地使用的分支或单独的控制流(数据传输或逻辑),那么 PyTorch可能更有用。否则,最好的起点可能是使用Keras - 一个基于 Tensorflow的高级 API

(非常)一般的经验法则是:

使用 Pytorch 进行实验,使用 Tensorflow 进行生产

现在对上述全面声明的警告:

  1. 两个图书馆都在努力覆盖“另一个”图书馆的优势:

最新版本的 Pytorch (v1.0) 提供了几种制作生产就绪代码的方法 - 因此编译它以提高性能以及使用 16 位浮点运算(与标准 32 位相对)的方法。他们还开始推出 C++ API。这些都是制作用于部署的全面产品的所有步骤。Tensorflow 引入了它的 Eager API,用于 Eager Execution,这意味着您可以像在 PyTorch 中一样构建动态图。这可以实现更快、更具交互性的原型设计。

  1. 您在开发过程中的经验可能更重要:

如果你是一个纯粹的 Python 开发者,PyTorch 会感觉更自然。如果你曾经是其他静态类型语言(如 C++ 和 Java)的普通软件工程师,Tensorflow 可能会觉得更符合逻辑。

概括

总的来说,Tensorflow 和(现在内置的)Keras 包装器是一个更成熟的库,拥有更大的社区和更长的历史,这意味着更多的在线支持。据我所知,PyTorch 周围有更高级别的 excitemnet。它在研究和较新的开源项目/课程中被非常积极地使用,这表明它可能成为主导力量。