【发布时间】:2016-11-26 08:02:49
【问题描述】:
根据this tutorial,用Python和Numpy,我想将MNIST数据集训练成可以识别手写数字的神经网络。我理解逻辑,但我现在有问题。
在本教程中,测试用例是AND 逻辑门,由于数据量小,它可以正常工作。但我使用MNIST 数据库,每个图像都有28*28 维度,当我将它们中的每一个转换为向量时,我有N*784 矩阵。如果我有一个784*1 矩阵作为weight matrix,当我将它与输入矩阵相乘时,得到的数字将是非常小或非常大的数字(负数或正数),因为我使用Sigmoid 激活函数,我的所有数据在第一个学习周期分为两部分,1 和 0,但我需要少量缓慢收敛的数据。
例如,我在乘法后得到这些数字:-569.87541502,218.62477264,Sigmoid 激活函数中的第一个是 0,第二个是 1,没有训练和收敛的空间。所有这一切都是因为大量的数据将它们相加产生了如此大或非常小的数字。
我使用这个技巧来生成比原始教程非常小的权重,但我得到了相同的结果(我在想,因为这些数字很小,它们的总和不能很大,但我得到相同的结果):
syn0 = (2*np.random.random((784,10))-1)*(0.00000005-0.00000001) + 0.00000001
我不知道我该如何克服。
【问题讨论】:
标签: python matrix scipy neural-network mnist