【发布时间】:2019-11-26 13:25:18
【问题描述】:
我在编写简单的神经网络时遇到了一些问题。我正在通过“11 行神经网络”指南 (https://www.kdnuggets.com/2015/10/neural-network-python-tutorial.html) 学习 Python 中的神经网络。有二维数组作为输入(第一维是示例编号,第二维是示例) 作为输出,有一个一维数组。所以现在我尝试做类似的事情。我有用于学习的输入数组,包含 1000 个示例,每个示例有 64 个神经元:
n0 = np.zeros((1000, 64))
之后,我用数据集中的数据填充数组。我的体重是这样的:
w0 = 2 * np.random.random((64, 120))-1
w1 = 2 * np.random.random((120, 240))-1
w2 = 2 * np.random.random((240, 240))-1
w3 = 2 * np.random.random((240, 240))-1
w4 = 2 * np.random.random((240, 120))-1
w5 = 2 * np.random.random((120, 44))-1
前向功能是:
n1 = sigmoid(np.dot(n0, w0))
n2 = sigmoid(np.dot(n1, w1))
#...
n6 = sigmoid(np.dot(n5, w5))
之后 n6 大小为 1000x44。我怎样才能得到一维数组,而不是二维数组?同样在权重校正之后,神经元可以得到像 6.72853722e-172 这样的奇怪数字......而在 n6 中,答案是 1.00000000e+000 和 0.00000000e-000,在 sigmoid 函数之后怎么可能呢?
【问题讨论】:
-
您可以使用
np.flatten()转换为一维数组或在末尾添加另一个具有较少节点的层。
标签: python numpy machine-learning neural-network