我的神经网络(3层)的输出层使用sigmoid作为激活函数,只能输出[0-1]范围内的值。但是,如果我想要训练它输出超出[0-1]的值,比如在千位数级别上,我该怎么办?
例如,如果我想要进行以下训练:
输入 ----> 输出
0 0 -------> 0
0 1 -------> 1000
1000 1 -----> 1
1 1 --------> 0
我的程序可以处理AND、OR、XOR等二进制输入输出的情况。
有人建议使用以下方法:
激活函数:
y = lambda*(abs(x)1/(1+exp(-1(x))))
激活函数的导数: lambda*(abs(y)y(1-y))
这对于上述训练模式没有收敛(如果我没有做错什么的话)。请问是否有其他建议?
例如,如果我想要进行以下训练:
输入 ----> 输出
0 0 -------> 0
0 1 -------> 1000
1000 1 -----> 1
1 1 --------> 0
我的程序可以处理AND、OR、XOR等二进制输入输出的情况。
有人建议使用以下方法:
激活函数:
y = lambda*(abs(x)1/(1+exp(-1(x))))
激活函数的导数: lambda*(abs(y)y(1-y))
这对于上述训练模式没有收敛(如果我没有做错什么的话)。请问是否有其他建议?
f(x) = x
,而不是 Sigmoid 激活函数。此外,您尝试使用神经网络预测的目标属性决定了您所面临的问题类型:分类/名义值(分类问题,例如将电子邮件分类为垃圾邮件/非垃圾邮件)与数值型值(回归问题,例如预测股票价格)。 - Amro