我想训练一个有多个输出层的网络。
in->hidden->out 1
->out 2
这可能吗?如果是这样,我如何设置数据集和培训师来完成培训。
答案 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>