【问题标题】:Difference between Numpy and Tensorflow? [closed]Numpy 和 Tensorflow 的区别? [关闭]
【发布时间】:2020-04-20 09:28:22
【问题描述】:

numpytensorflow 是同一个东西吗?我刚开始学习编程..这与我的课程完全无关.. 我在学习AI,发现tensorflow...开始看视频,看到下面的代码:

import tensorflow as tf

tf.ones([1,2,3])

tf.zeros([2,3,2])
import numpy as np

np.zeros([2,3,2])

np.ones([1,2,3])

【问题讨论】:

  • 欢迎来到 SO!论坛上的问题将在网上适当研究后发布。这是一个非常微不足道的问题,只需极少的谷歌搜索就可以解决。投票结束。
  • 这是我在谷歌搜索类似问题时看到的第一个结果。高质量的答案。这不是基于意见的,我不会投票结束。

标签: python numpy tensorflow


【解决方案1】:

我认为可能值得添加更多信息,尽管只需搜索一下就很容易找到它。

NumPy 和 TensorFlow 实际上在很多方面都非常相似。两者本质上都是数组操作库,围绕张量(或 NumPy 术语中的 nd 数组)的概念构建。最初,在 TensorFlow 0.x 和 1.x 中,只有“图形模式”,所有值都是“符号张量”,直到稍后输入一个值才具有特定值......有点令人困惑并且与 NumPy 完全不同。如今“图形模式”仍然存在,但在大多数情况下,TensorFlow 2.x 以“急切模式”工作,其中每个张量都有一个特定的值。这使它与 NumPy 更相似,因此差异可能看起来很微妙。所以也许我们可以起草一份清单,列出一些最重要的观点。

  • NumPy 是作为 Python 的成熟开源张量代数包开发的,可以与 MATLAB 等竞争。它是一个历史悠久且功能丰富的 Python 库,可以直接在其中或围绕它构建(参见 SciPy 和不同的 scikits)。 TensorFlow 最近由 Google 开发,专门用于构建机器学习模型(尽管您可以将它用于许多其他任务),延续了(现已停产)Theano 库的想法。尽管 TensorFlow 最常与 Python 一起使用,但它也可以用于 C/C++ 和其他语言,这很重要,因为它允许您在 Python 中训练模型,然后将其集成到用另一种语言编写的现有应用程序中。李>
  • TensorFlow 的一个主要卖点是它可以自动区分计算。这是深度学习的一个基本特性,它使用基于梯度的优化(反向传播),这意味着你几乎可以只写任何你想计算的东西,TensorFlow 会自己计算出梯度。 NumPy 有 Autograd 或 JAX 之类的东西,但它们不如 TensorFlow 自动微分功能强大,后者实际上在底层维护了一个计算图结构(“TensorFlow”这个名称是指张量及其梯度“流动”通过计算)图表)。
  • TensorFlow 通过开箱即用的 CUDA 提供 GPU 计算。还有像 CuPy for NumPy 之类的东西,但它不是库本身的一部分。
  • TensorFlow 将更多并非严格意义上的数组操作的功能集成到库本身中,例如图像操作和常见的神经网络实用程序。 NumPy 倾向于将这类事情推迟到 SciPy 等其他库,使其更像是一个生态系统,而不是单一的。 TensorFlow 也有其中的一些,例如 TensorFlow Probability 或 TensorFlow Graphics,但它还不是很发达。
  • 如果你正在做机器学习,TensorFlow 提供了一堆有用的东西,比如训练检查点、分布式训练、TensorBoard、TensorFlow Serving 等。它还更好地(或完全地)与推理平台和标准集成,如 TensorRT、Google Coral 、ONNX 之类的东西。
  • NumPy 通常与“传统”Python 科学堆栈(如 Jupyter、Matplotlib、Pandas、dask、xarray 等)更好地集成。也有相当不错的库可以使用 NumPy 进行机器学习,如 scikit-learn 或 Chainer,它们如果您只需要在 Python 中工作,则非常好。
  • TensorFlow 和 NumPy 也可以很好地协同工作,特别是在 Eager 模式下,任何 TensorFlow 张量都可以直接转换为 NumPy 数组。

一般来说,如果你不打算从事机器学习,特别是神经网络/深度学习,NumPy 可能是最好的选择,因为它更容易上手,至少对于一般用途而言,并且具有更大的社区和文档和资源的语料库。但是,如果您要在该领域做大量工作,可能值得尝试一下 TensorFlow

【讨论】:

    【解决方案2】:

    虽然方法名称和参数看起来相同,但它们并不是一回事。这在调试器中变得很清楚。只需将结果分配给变量并检查它们:

    如您所见,Tensorflow 为您提供 EagerTensor,NumPy 为您提供 NDArray。

    Tensorflow 是一个人工智能库,尤其是机器学习库。 Numpy 是一个用于进行数值计算的库。

    它们经常结合使用,因为通常需要对数据进行预处理,这可以使用 NumPy 完成,然后使用 TensorFlow 对处理后的数据进行机器学习。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-30
      • 2020-03-28
      • 2013-07-04
      • 2012-12-16
      • 2011-12-30
      • 2014-11-01
      • 2013-08-07
      • 2016-12-17
      相关资源
      最近更新 更多