TensorFlow、PyTorch 和其他主流 ML 框架能否用于 AI 的研究级工作?

人工智能 神经网络 张量流 Python 研究 火炬
2021-11-01 04:17:23

许多 AI 研究论文的作者(例如 arXiv)从头开始编写他们的神经网络,使用 C++ 等低级语言来实现他们的理论。现有的开源框架是否也可以用于此目的,或者它们的实现是否过于有限?

例如,TensorFlow 能否用于构建一个原始网络架构,以显示对现有基准的改进?可以将原始数学工作编码到 TensorFlow 之类的高级框架中,以便在论文中展示对网络架构/方法的原始研究吗?

快速搜索会发现许多在其实现中使用 C++ 的论文:

1个回答

您说研究人员使用 C++ 或其他一些低级库从头开始构建网络的说法与事实相去甚远

你可以看看这个分析,显示这两个框架在顶级 ML 会议中的流行度。下图取自那里。

例如,在 CVPR-2020 中,TensorFlow 和 pytorch 结合了 500 多篇论文!此外,由于两个最活跃的研究实体(谷歌和 Facebook)支持这两个框架,它们被用于一些最具影响力的研究中。


我想给出一些支持这些框架流行的理由,但首先我要重新表述一下你的问题:

为什么在 python 中使用 TensorFlow/Pytorch 而不是使用 C++ 自己构建模型?

注意:我重新表述问题的原因是因为TensorFlowPyTorch都有 C++ API。

与低级编程语言相比,为什么这些框架如此受欢迎?

一些原因如下

  • 快速原型制作语言链接 C++,具有臃肿的语法,需要低级操作(例如内存管理)并且不能交互运行。这意味着在 python 中创建和测试模型所花费的时间比在 C++ 中要少得多。

  • 无需重新发明轮子一些操作在大多数网络中都很常见(例如反向传播),为什么要重新实现它们?其他功能很难自己实现(例如并行处理、GPU 计算)。数据科学家是否需要拥有如此强大的技术背景来研究神经网络?

  • 开源. 它们受益于开源,并且可以为您提供大量用于构建神经网络的工具。您想将 batchnorm 添加到您的网络吗?不用担心,只需将其导入并添加到一行中!此外,它们为共享预训练模型提供了绝佳机会。

  • 它们经过优化这些框架经过优化,可以在 GPU(如果可用)或 CPU 上尽可能快地运行。一个人几乎不可能自己编写运行速度一样快的代码。