PyBrain培训多输出模块

时间:2014-03-03 23:10:48

标签: python neural-network pybrain

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

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

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

3 个答案:

答案 0 :(得分:1)

在考虑拆分输出以获得多个SoftMax区域时,可以使用PyBrain提供的PartialSoftmaxLayer

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

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

答案 1 :(得分:0)

没有。您可以拥有多个隐藏图层,例如

in - >隐藏1 - >隐藏2 - >出

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

从技术上讲,你可以设置任何神经元和层的排列,然后按照你喜欢的方式连接它们,并随意调用它们,但上面是这样做的一般方法。

答案 2 :(得分:0)

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

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

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

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

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