我正在编程一个神经网络来测试我的想法。问题是我甚至无法测试网络的性能,因为无论输入如何,它都能保持完全相同的输出。
网络正在使用MNIST数据集进行训练,并具有10个输出节点。
仅仅由于神经网络如何计算数学,即使神经网络没有收敛于任何东西,它仍然不会产生任何数学意义,它会将完全相同的输出输出到百万分之一小数位。
每当我重新训练网络时,它当然会有一个新的输出,可能是由于新的计算权重集。但无论输入如何,输出都保持不变。
有谁知道问题可能是什么?
编辑:
我正在使用sigmoid功能。
在我训练之后,查询它我的输出看起来像这样。
`array([[ 0.10651613],
[ 0.11501053],
[ 0.11034159],
[ 0.11213908],
[ 0.10754446],
[ 0.09952921],
[ 0.10827382],
[ 0.11763775],
[ 0.10538466],
[ 0.10562691]])
然后我会用不同的输入查询它,并得到相同的输出。
答案 0 :(得分:0)
您现有的激活(sigmoid)很可能导致下溢。一种选择是考虑更改激活功能。
这里是ReLU函数及其衍生物的样子:
def relu(x):
return x * (x > 0)
def relu_diff(x):
return x > 0
使用relu,您的网络学得更快,因此您也可以减少您训练的时期数量。