2016-07-09 80 views
0

我读过你计算神经网络中神经元的输出,将所有输入乘以相应的权重,然后用例如Sigmoid函数。神经网络神经元输出数> 1

但我不明白的是,这个总和(不平滑)可以得到大于1

发生这种情况时我的双曲线函数输出1.0。

我使用来计算神经元输出(无平滑)的功能是:

def sum(self, inputs): 
    valu = 0 
    for i, val in enumerate(inputs): 
     valu += float(val) * self.weights[i] 
    return valu 

所以我的问题是: 难道我做错了什么,因为我已阅读,输出应该是介于0和1?

+2

不是很了解你的问题。加权输入的总和可以大于1。它也可以小于零。 sigmoid函数将把这个值映射到0到1之间的数字。您的代码示例只是计算加权总和而不应用sigmoid函数。 –

+0

如果输入到sigmiod函数的值大于1,那么它只是返回1.这就是我的问题 –

+0

但是如果不显示sigmoid函数的代码,我们该如何帮助您?你的代码示例只是计算神经元的状态,而不是输出。通常你可以通过在状态中应用ome类型的sigmoid函数来获得输出结果。 –

回答

0

的S形函数是不完全平滑函数,它是该域映射到[0,1]范围内的非线性方式的非线性函数。非正式地说,非线性函数没有一个固定的斜率,换句话说,它不能被描述为一条直线。

如您在下图中看到的那样,sigmoid函数使输入变得如此,以至于随着输入量的增加,sigmoid的输出渐近地接近0(负输入)和1(正输入) Sigmoid and its derivative in the [-6, 6] range