我知道这可能是语义问题,但我总是看到不同的文章解释前向传递略有不同。例如,有时它们代表标准神经网络中隐藏层的前向传递np.dot(x, W),有时我认为它np.dot(W.T, x)有时是np.dot(W, x)。
以这张图片为例。它们将输入数据表示为矩阵[NxD]和权重数据,[DxH]其中 H 是隐藏层中神经元的数量。这似乎是最自然的,因为输入数据通常采用表格格式,其中行作为样本,列作为特征。
现在是 CS231n 课程笔记中的一个示例。他们在下面的示例中讨论了这个,并引用了用于计算它的代码:
f = lambda x: 1.0/(1.0 + np.exp(-x)) # activation function (use sigmoid)
x = np.random.randn(3, 1) # random input vector of three numbers (3x1)
h1 = f(np.dot(W1, x) + b1) # calculate first hidden layer activations (4x1)
h2 = f(np.dot(W2, h1) + b2) # calculate second hidden layer activations (4x1)
out = np.dot(W3, h2) + b3 # output neuron (1x1)
哪里W是[4x3]和 x 是[3x1]。我希望权重矩阵的维度等于 [n_features, n_hidden_neurons] 但在此示例中,它们似乎在使用之前自然地转置了它。
我想我只是对在计算神经网络前向传递时如何一致地塑造和使用数据的一般命名法感到困惑。有时我看到转置,有时我没有。有没有一种标准的、首选的方式来根据像这样的图表来表示数据?这个问题可能很愚蠢,但我只是想讨论一下。谢谢你。

