作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的神经网络(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))
对于上述训练模式,这并没有收敛(如果我没有做错任何事)。请问有什么建议吗?
最佳答案
对于分类问题,习惯上在输出层使用sigmoid/logistic激活函数来得到[0,1]范围内的合适概率值;再加上多类分类的 1-of-N 编码,每个节点输出将代表实例属于每个类值的概率。
另一方面,如果您有回归问题,则无需在输出上应用额外的函数,您只需获取原始线性组合输出即可。网络将自动学习权重,以提供您拥有的任何输出值(即使是数千个)。
您还应该注意缩放输入特征(例如,通过将所有特征标准化到范围 [-1,1])。
关于matlab - 神经网络输出 :Scaling the output range,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9048031/
我是一名优秀的程序员,十分优秀!