神经网络输出:扩展输出范围

我的神经网络(三层)输出层使用了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]范围内)。

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注