为什么我的神经网络为不同的输入返回相同的输出?

时间:2017-07-03 22:05:17

标签: machine-learning neural-network

我正在编程一个神经网络来测试我的想法。问题是我甚至无法测试网络的性能,因为无论输入如何,它都能保持完全相同的输出。

网络正在使用MNIST数据集进行训练,并具有10个输出节点。

仅仅由于神经网络如何计算数学,即使神经网络没有收敛于任何东西,它仍然不会产生任何数学意义,它会将完全相同的输出输出到百万分之一小数位。

每当我重新训练网络时,它当然会有一个新的输出,可能是由于新的计算权重集。但无论输入如何,输出都保持不变。

有谁知道问题可能是什么?

编辑:

我正在使用sigmoid功能。

在我训练之后,查询它我的输出看起来像这样。

`array([[ 0.10651613],
   [ 0.11501053],
   [ 0.11034159],
   [ 0.11213908],
   [ 0.10754446],
   [ 0.09952921],
   [ 0.10827382],
   [ 0.11763775],
   [ 0.10538466],
   [ 0.10562691]])

然后我会用不同的输入查询它,并得到相同的输出。

1 个答案:

答案 0 :(得分:0)

您现有的激活(sigmoid)很可能导致下溢。一种选择是考虑更改激活功能。

这里是ReLU函数及其衍生物的样子:

def relu(x):
    return x * (x > 0)

def relu_diff(x):
    return x > 0

使用relu,您的网络学得更快,因此您也可以减少您训练的时期数量。