2016-09-20 69 views
3

我试过搜索StackOverflow,谷歌搜索,甚至使用symbolhound做字符搜索,但无法找到答案。具体来说,我很困惑Ch。 1的尼尔森的神经网络和深度学习,他说,“假设输入a(n, 1) Numpy ndarray,而不是(n,) vector”。在numpy和向量的背景下,(n,)意味着什么?

起初我以为(n,)指的是数组的方向 - 所以它可能指的是一列矢量,而不是一列只有一列的矢量。但后来我不明白为什么我们需要(n,)(n, 1) - 他们似乎都是这么说的。我知道我误解了一些东西,但不确定。

仅供参考a涉及一个激活矢量,它将被输入到神经网络的给定层,然后通过权重和偏差进行转换以产生下一层激活的输出向量。

编辑:这个问题在“一列向量”(没有这种东西)和“一列矩阵”(确实存在)之间含义不清。 “一行向量”和“一行矩阵”也是如此。

向量只是一个数字列表,或者(等同地)是一个向量空间的基向量上的标量变换列表。一个向量可能看起来像一个矩阵,当我们写出来,如果它只有一行(或一列)。令人困惑的是,我们有时会提到一个“激活向量”,但实际上意味着“激活值的单行矩阵被转置,因此它是单列”。

请注意,在任何情况下我们都不会讨论一维向量,它将是一个只由一个数字定义的向量(除非平凡,n == 1,在这种情况下,“列”的概念或“行”区分将是没有意义的)。

+0

我看到您还没有习惯实际上是一维向量的想法,而不是单行或单列矩阵。 – user2357112

回答

3

numpy的阵列可以具有许多不同的尺寸,0,1,2等

典型2D阵列具有尺寸(n,m)(这是一个Python元组)。我们倾向于将其描述为具有n行m列。所以(n,1)数组只有1列,并且(1,m)有1行。

但是,因为数组可能只有一个维度,因此可能有一个形状(n,)(1元组元组的Python表示法:有关更多,请参阅here)。

对于多种用途(n,),(1,n),(n,1)阵列是等效的(也是(1,n,1,1)(4d))。他们都有n的条款,并可以相互重塑。

但有时候额外的1尺寸很重要。一个(1,m)数组可以乘一个(n,1)数组产生一个(n,m)数组。一个(n,1)数组可以被索引为(n,m),有2个索引,x[:,0],其中a(n,)只接受x[0]

MATLAB矩阵总是2d(或更高)。因此,从MATLAB转移想法的人倾向于预期2个维度。有一个np.matrix子类,应该模仿。

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

查看如何解释存储在ndarrays中的数据的形状。它还提供了有关如何使用的深入见解.reshapehttps://stackoverflow.com/a/22074424/3277902

3

(n,)是长度为1的元组,其唯一元素是n。 (语法不(n),因为这是使一个元组的只是n代替。)

如果数组具有形状(n,),这意味着它是一个一维数组的n沿其仅尺寸的长度。它不是一个行向量或一个列向量;它没有行或列。它只是一个矢量。