我尝试过搜索StackOverflow、google,甚至使用symbolhound进行字符搜索,但都找不到答案。具体地说,我对尼尔森神经网络和深度学习的第1章感到困惑,他说“假设输入(n, 1) Numpy ndarray
,而不是(n,) vector
。”
一开始我以为(n,)
指的是数组的方向,所以它可能指的是一列向量,而不是只有一行的向量。但我不明白为什么我们需要(n,)
和{
作为参考,a
是指将被输入到神经网络的给定层的激活向量,然后被权重和偏差变换以产生下一层激活的输出向量。在
编辑:这个问题在“单列向量”(没有这样的东西)和“单列矩阵”(确实存在)之间模棱两可。“单行向量”和“单行矩阵”也是一样的。在
向量只是一个数字的列表,或者(等价地)在向量空间的基向量上的一系列标量变换。如果一个向量只有一行(或一列),当我们写出它时,它可能看起来像一个矩阵。令人困惑的是,我们有时会提到一个“激活向量”,但实际上是指“单个行矩阵的激活值转置,因此它是一个单一的列。”
请注意,在这两种情况下,我们都没有讨论一维向量,它将是一个仅由一个数字定义的向量(除非n==1,在这种情况下,“列”或“行”区别的概念将毫无意义)。在
{cd1>数组中可以有不同的维数
典型的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中传递思想的人倾向于期望二维。有一个
np.matrix
子类应该模仿它。在对于numpy程序员来说,向量、行向量、列向量、矩阵之间的区别是松散的,相对来说并不重要。或者该用法是从应用程序而不是从
numpy
本身派生的。我想这就是这本网络书所发生的事情——符号和期望来自numpy
之外。在有关如何根据
ndarrays
中存储的数据解释形状,请参见此答案。它还提供了关于如何使用.reshape
:https://stackoverflow.com/a/22074424/3277902的见解(n,)
是长度为1的元组,其唯一的元素是n
。(语法不是(n)
,因为这只是n
,而不是生成元组。)如果一个数组的形状是
(n,)
,这意味着它是一个一维数组,其唯一维度上的长度为n
。它不是行向量或列向量;它没有行或列。它只是一个向量。在相关问题 更多 >
编程相关推荐