(n,) 在 numpy 和向量的上下文中是什么意思?

bob*_*obo 8 python numpy machine-learning neural-network

我尝试搜索 StackOverflow、谷歌搜索,甚至使用符号猎犬进行字符搜索,但无法找到答案。具体来说,我对Ch感到困惑。Nielsen 的Neural Networks and Deep Learning 的第 1 章,他说“假设输入a(n, 1) Numpy ndarray,而不是(n,) vector。”

起初我认为(n,)指的是数组的方向 - 所以它可能指的是一列向量,而不是只有一行的向量。但我不明白为什么我们需要(n,)(n, 1)两个-他们似乎在说同样的事情。我知道我误解了一些东西,但我不确定。

作为参考a,激活向量将输入到神经网络的给定层,然后通过权重和偏差进行转换以生成下一层的激活输出向量。

编辑:这个问题在“一列向量”(没有这样的东西)和“一列矩阵”(确实存在)之间模棱两可。“一行向量”和“一行矩阵”也是如此。

向量只是一个数字列表,或(等价地)向量空间基向量上的标量变换列表。如果一个向量只有一行(或一列),那么当我们将它写出来时,它可能看起来像一个矩阵。令人困惑的是,我们有时会提到“激活向量”,但实际上是指“转置的单行激活值矩阵,使其成为单列”。

请注意,在这两种情况下,我们都不是在讨论一维向量,该向量将是一个仅由一个数字定义的向量(除非,平凡地,n==1,在这种情况下,“列”或“行”区别的概念将毫无意义)。

use*_*ica 6

(n,)是一个长度为 1 的元组,它的唯一元素是n。(语法不是(n)因为那只是n创建一个元组。)

如果数组具有 shape (n,),则意味着它是一个一维数组,n其唯一维度的长度为。它不是行向量或列向量;它没有行或列。它只是一个向量。


hpa*_*ulj 6

numpy一个数组中可以有许多不同的维度,0、1、2 等。

典型的二维数组具有维度(n,m)(这是一个 Python 元组)。我们倾向于将其描述为有 n 行、m 列。所以一个(n,1)数组只有 1 列,a(1,m)有 1 行。

但是因为数组可能只有 1 维,所以可能有一个形状(n,)(1 元素元组的 Python 表示法:更多信息请参见此处)。

出于许多目的(n,), (1,n),(n,1)数组是等效的(也是(1,n,1,1)(4d))。它们都有n术语,并且可以相互重塑。

但有时这种额外的1维度很重要。(1,m) 数组可以乘以 (n,1) 数组生成 (n,m) 数组。一个 (n,1) 数组可以像 a (n,m) 那样索引,有 2 个索引,x[:,0]而 a (n,) 只接受x[0].

MATLAB 矩阵始终为 2d(或更高)。因此,人们从 MATLAB 中转移思想倾向于期望 2 维。有一个np.matrix子类应该模仿它。

对于 numpy 程序员来说,向量、行向量、列向量、矩阵之间的区别是松散且相对不重要的。或者使用源自应用程序而不是numpy其本身。我认为这就是这本网络书籍正在发生的事情 - 符号和期望来自numpy.

另请参阅此答案,了解如何根据 .csv 文件中存储的数据解释形状ndarrays。它还提供了有关如何使用的见解.reshapehttps : //stackoverflow.com/a/22074424/3277902