4

我想训练一个具有多个输出层的网络。

in->hidden->out 1
          ->out 2

这可能吗?如果是这样,我该如何设置数据集和训练器来完成训练。

4

3 回答 3

1

当您正在考虑拆分输出以获得多个 SoftMax 区域时,您可以使用PartialSoftmaxLayerPyBrain 提供的。

请注意,它仅限于相同长度的切片,但如果您需要自定义输出层,它的代码可以激发您的灵感:

https://github.com/pybrain/pybrain/blob/master/pybrain/structure/modules/softmax.py

于 2015-02-14T05:22:31.960 回答
0

不,你可以有多个隐藏层,像这样

输入 -> 隐藏 1 -> 隐藏 2 -> 输出

或者,您可以有多个输出神经元(在单个输出层中)。

从技术上讲,您可以设置神经元和层的任何排列,随意连接它们,并随意调用它们,但以上是执行此操作的一般方式。

于 2014-03-06T22:13:39.723 回答
0

作为程序员,这对你来说会做更多的工作,但是如果你想有两个不同的输出,你总是可以将你的输出连接到一个向量中,并将其用作网络的输出。

in --> hidden --> concatenate([out1, out2])

这种方法的一个可能显着的缺点是,如果两个输出具有不同的尺度,那么连接将扭曲您用于训练网络的误差度量。

但是,如果您能够使用两个单独的输出,那么您仍然需要解决这个问题,可能通过某种方式对您使用的两个错误指标进行加权。

该问题的潜在解决方案可以包括定义自定义误差度量(例如,通过使用加权平方误差或加权交叉熵的变体)和/或标准化两个输出数据集,以便它们以共同的尺度存在。

于 2014-03-08T17:38:15.923 回答