2017-07-03 142 views
0

我正在编程一个神经网络来测试我的想法。问题是我还没有能够测试网络的性能如何,因为无论输入如何,它都会输出完全相同的输出。与不同输入(神经网络)相同的输出

网络正在接受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

我正在使用sigmoid函数。 当我训练它,并查询它,我的输出看起来像这样。 阵列([[0.10651613], [0.11501053], [0.11034159], [0.11213908], [0.10754446], [0.09952921], [0.10827382], [0.11763775], [0.10538466], [0.10562691]]) 然后我会用不同的输入查询它,并会得到相同的确切输出。 –

+0

我对这个问题和潜在的解决方案有几点想法。但是没有任何代码是不可能的。 :) –

回答

0

由于挤压图像无效,您可以查看更改激活功能。现有的激活很可能导致下溢。

下面介绍一下RELU函数及其导数的样子:

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

def relu_diff(x): 
    return x > 0 

随着RELU,网络学习速度更快,因此可以减少你训练的历元数,太。

+0

try'ed relu函数仍然无法工作。 它仍然吐出完全相同的输出。我将通读我关于爆炸渐变的那一页,我仍然只是阅读的一部分。出于某种原因,我觉得这可能是问题。 –

+0

@RoshawnTerrell你见过['np.clip'](https://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.clip.html)吗?您可以使用它在渐变爆炸或消失之前剪切渐变。 –

+0

我会试试这个,谢谢。 –