具有2D阵列输入和1D阵列输出的神经网络

时间:2019-07-17 16:25:30

标签: python numpy machine-learning neural-network

我在编写简单的神经网络时遇到了一些问题。我正在通过“ 11行神经网络”指南(https://www.kdnuggets.com/2015/10/neural-network-python-tutorial.html)了解python中的神经网络。有2D数组作为输入(第一维是示例编号,第二维是示例) 作为输出,有一维数组。所以现在我尝试做类似的事情。我有用于学习的输入数组,包含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,在乙状结肠功能之后会怎样呢?

1 个答案:

答案 0 :(得分:0)

  

之后,n6的大小为1000x44。以及如何获得一维数组而不是二维数组?

之所以获得尺寸为1000x44的输出数组,是因为n6具有44个输出节点,并且您的输入数据具有1000个示例(这意味着您正在对所有示例进行网络训练一次)。

换句话说,您的输出层正在为数据集中的每个示例产生“激活” <-这是正常的和预期的。如果您一次训练一个网络示例,则输出数组将为1x44(或仅为44)。


  

权重校正后,神经元还能得到像6.72853722e-172这样的奇数。在n6中,答案是1.00000000e + 000和0.00000000e-000,在乙状结肠功能之后会怎样呢?

Sigmoid产生介于01之间的值。因此: 6.72853722e-172 (或6.72 * 10 -172 ), 1.00000000e + 000 0.00000000e-000 都在01之间,所以也很正常