Numpy 和 Tensorflow 之间的区别?

Bij*_*rki 3 python numpy tensorflow

numpytensorflow一样的吗??我刚开始学习编程..这与我的课程完全无关..我正在学习人工智能并发现tensorflow......我开始看视频,我看到了下面的代码:

import tensorflow as tf

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

tf.zeros([2,3,2])
Run Code Online (Sandbox Code Playgroud)
import numpy as np

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

np.ones([1,2,3])
Run Code Online (Sandbox Code Playgroud)

jde*_*esa 7

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

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

  • NumPy 被开发为一个成熟的开源张量代数包,可以与 MATLAB 等相媲美。它是一个具有悠久历史和大量功能的 Python 库,可以直接使用它或围绕它构建(参见 SciPy 和不同的 scikits)。TensorFlow 由 Google 最近开发,专门用于构建机器学习模型(尽管您可以将其用于许多其他任务),延续了(现已停产)Theano 库中的想法。尽管 TensorFlow 最常与 Python 一起使用,但它也可用于 C/C++ 和其他语言,这很重要,因为它允许您在 Python 中训练模型,然后将其集成到用另一种语言编写的现有应用程序中。
  • TensorFlow 的一个主要卖点是它可以自动区分计算。这是深度学习的一个基本特征,它使用基于梯度的优化(反向传播),这意味着你几乎可以编写任何你想要计算的东西,TensorFlow 会自己计算出梯度。NumPy 有 Autograd 或 JAX 之类的东西,但它们不如 TensorFlow 自动微分强大,后者实际上在幕后维护了计算图结构(名称“TensorFlow”指的是张量及其梯度在计算中“流动”图形)。
  • TensorFlow 提供开箱即用的带有 CUDA 的 GPU 计算。NumPy 也有像 CuPy 这样的东西,但它不是库本身的一部分。
  • 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


Tho*_*ler 1

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

调试器屏幕截图 PyCharm

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

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

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