TensorFlow与PyTorch之间有何不同?

TensorFlow与机器学习 徐 自远 791℃

由于人工智能正在几乎所有自动化领域得到实施。 深度学习是用于开发和最大化类人计算机效率的最棘手的架构之一。 为了帮助产品开发人员,Google,Facebook和其他大型科技公司已经发布了各种Python环境框架,可以学习,构建和培训多样化的神经网络。

谷歌的TensorFlow是深度学习的开源框架,多年来受到欢迎。 使用新框架,PyTorch因其易于编写的代码而受到初学者的关注。 PyTorch是基于Python,C ++和CUDA后端开发的,可用于Linux,macOS和Windows。

这两个广泛使用的框架之间存在一些差异,可能是因为它们实现代码,可视化技术以及静态和动态编程的方式。

我们来看看差异:

计算图

初始化时,在PyTorch上分配和构建图形遵循动态计算图形方法。熟悉Python中的数学库的用户会发现它很容易,因为人们不必为了构建图形而头脑发热。您可以按照自己的方式直接编写输入和输出功能,而无需担心尺寸张量。通过CUDA支持,这使生活变得更加容易。

在TensorFlow中,人们必须努力构建张量(图形)的维度以及为变量分配占位符。完成此操作后,必须运行会话才能计算出所有计算结果。这样的痛苦,不是吗?

例如,tf.Session()用于构建会话,tf.Variable()用于将权重分配给变量,依此类推。初始化后,可以构建一个神经网络,用于TensorFlow中的训练。

文档

PyTorch和TensorFlow的文档广泛可用,考虑到两者都在开发中,而PyTorch是最近发布的,与TensorFlow相比。人们可以在两个框架上找到大量文档,其中实现得到了很好的描述。

这两个框架都提供了大量的教程,这有助于人们专注于通过用例学习和实现它们。

适应设备

PyTorch和TensorFlow都有GPU扩展可用。这两个框架之间的主要区别在于,当考虑GPU进行TensorFlow计算时,它会消耗所有可用GPU的整个内存。通过为特定进程分配正确的GPU设备可以避免这种情况。 tf.device()为您提供选择首选GPU的选项。由于TensorFlow是一种静态计算图形方法,因此可以轻松优化此框架上的代码。

在PyTorch上,变量可以与权重一起分配并同时运行,其中框架构建计算所需的图形。这方面的GPU使用已经通过CUDA安装启用,即使在尝试在CPU上运行时,PyTorch也总是试图找到要计算的GPU。因此,必须提供X.cpu()扩展才能在CPU上运行它。

在TensorFlow tf.device(/ cpu:0):参数用于在CPU上运行它。也可以选择使用tf.device(/ gpu:0)的GPU来选择第一个GPU或tf.device(/ gpu:1)来选择第二个GPU。

模型可视化

可视化是理解模型性能和工作的关键。 TensorFlow具有图形和模型TensorBoard的实时表示功能,非常方便。 在这里,人们不仅能够获得神经网络的图形表示,还能够获得实时的损失和准确度图,其描绘了模型在特定迭代中的精确度。 这是一些例子:

这是一个实时分析,与PyTorch相比,TensorFlow擅长,而PyTorch完全缺乏此功能。 您还可以可视化神经网络的流程图,包括音频文件(如果您的数据中存在),这非常棒。

结论

在未来,PyTorch可能会像TensorBoard一样添加可视化功能。 PyTorch因其动态的计算方法和简单性而越来越受欢迎。 建议初学者在继续使用TensorFlow之前在PyTorch上工作,这有助于他们专注于模型而不是花时间构建图形。


我会在这里发布所有与科技、科学有关的有趣文章,欢迎订阅我的头条号。偶尔也回答有趣的问题,有问题可随时在评论区回复和讨论。

我以前是 TensorFlow 的用户,但是加入英伟达之后,我们决定转向 PyTorch(出于测试的目的)。以下是我的一些体验。

安装

PyTorch 的安装轻松直接,可以通过 PIP 或数据源安装。PyTorch 还提供 Docker 镜像,可用作项目的基图像。

PyTorch 没有专门的 CPU 版本和 GPU 版本,这一点与 TensorFlow 不同。但是这使得安装更加便捷,因为同时支持 CPU 和 GPU 的使用,它可以生成更丰富的代码。

需要注意,PyTorch 暂时无法提供官方的 Windows 分发。现在有非官方的 Windows 端口,但是并未得到 PyTorch 的支持。

使用

PyTorch 提供 Python 式的 API。这与 TensorFlow 不同,在 TensorFlow 中你需要先定义所有张量和图,再在会话中使用。

我认为,这将使代码变得更长,但是更简洁易懂。PyTorch 图必须在从 PyTorch nn.Module 类中继承的类中进行定义。图运行时会调用一个 forward() 函数。用这种「约定优于配置」方法,图的位置通常是已知的,且变量不用在后面的代码中进行定义。

这种「新」方法需要一些时间来适应,但是我认为,如果你在深度学习之外的领域中使用过 Python,那么你会发现这种方法非常直观。

根据一些评价,PyTorch 还在大量模型中展示了优于 TensorFlow 的性能。

文档

文档在大多数情况下是完整的。我查找函数或模块的定义时,从未失败过。TensorFlow 文档中所有的函数都在同一页,PyTorch 不同,它每个模块使用一页。如果你习惯了用 TensorFlow 查找函数的话,这可能有点难。

社区

很明显,PyTorch 社区没有 TensorFlow 社区大。但是,很多人喜欢在闲暇时间使用 PyTorch,即使在工作时间仍使用 TensorFlow。我认为如果 PyTorch 脱离 Beta,这种情况可能会有所改变。

当前,精通 PyTorch 的人仍然很少。

这个社区足够大,官方论坛的问题会得到快速回答,这样大量很棒的神经网络的示例实现就会被翻译成 PyTorch。

工具和助手

即使 PyTorch 提供大量的工具,但还缺少一些非常有用的工具。其中之一就是 TensorFlow 的 TensorBoard。这使得可视化稍微有点困难。

PyTorch 还缺少很多常用助手,比起 TensorFlow,这要求 PyTorch 用户更多依靠自己写代码。

结论

PyTorch 是 TensorFlow 的重要替代方案。由于 PyTorch 还在 Beta 中,所以我期待 PyTorch 的易用性、文档和性能都能够有更多改变和改进。

PyTorch 是很 Python 式的,用起来很舒适。它的社区和文档都很优秀,据说它还比 TensorFlow 稍快一点。

但是,PyTorch 社区与 TensorFlow 社区相比较小,且缺少很多有用的工具,如 TensorBoard。

TensorFlow与PyTorch之间有何不同?http://t.jinritoutiao.js.cn/eDA4uY/

转载请注明:徐自远的乱七八糟小站 » TensorFlow与PyTorch之间有何不同?

喜欢 (1)

苏ICP备18041234号-1 bei_an 苏公网安备 32021402001397号