【发布时间】:2019-12-06 20:59:55
【问题描述】:
我正在阅读“制作你自己的神经网络”一书,并通过示例来实现我的第一个 NN。我理解了基本概念,特别是这个等式,其中输出是通过输入和权重的矩阵点积来计算的:
X = W * I
其中 X 是应用 Sigmoid 之前的输出,W 是链接权重,I 是输入。
现在在本书中,他们确实有一个函数可以将此输入作为一个数组接收,然后他们将该数组转换为二维数组。我的理解是,X的值是这样计算的:
W = [0.1, 0.2, 0.3
0.4, 0.5, 0.6
0.7, 0.8, 0.9]
I = [1
2
3]
因此,如果我现在为我的输入(如 [1,2,3])传入一个数组,为什么我需要执行以下操作才能将其转换为 2-D 数组,就像书中所做的那样:
inputs = numpy.array(inputs, ndmin=2).T
有什么想法吗?
【问题讨论】:
-
神经网络通常使用二维数组作为输入和输出,其基本思想是
n行代表观察,m列代表特征。在您的情况下,您只有1功能、您的输入(这也是您要预测的内容)和3观察结果。换句话说,它更像是一种约定,恰好有助于理解您如何使用和存储数据。 -
能否请您用答案和示例解释详细说明?
-
恕我直言@TheHalf-BloodPrince 已经指出了所有相关的内容。也许另一点可能会有所帮助:通过断言
inputs始终是二维的,您可以确保生成的点积np.dot(W, I)的方向始终是每个特征的列向量(每个自变量/组合等......都有其“自己的”行),与特征数量无关。菲对于n_features=1和ndmin=1,你会从np.dot(W, I)得到一个行向量, -
一方面不遵循约定,另一方面可能需要转置等,具体取决于下一步的算法。
-
谢谢@Scotty1-!如果有帮助,我添加了一个带有进一步解释的答案和一个示例!
标签: python arrays neural-network