PyBrain多个目标值

时间:2014-03-03 13:25:23

标签: python machine-learning neural-network image-recognition pybrain

我正在尝试训练ANN来预测属于多个类的图像的概率,而我的目标值是这些概率的集合。

输入是简单的重塑28x28灰度图片,像素值为0-255。

一个'目标'看起来像这样:0.738832,0.238159,0.023009,0,0.238159,0,0.238159,0,0.238159,0,0,0.238159,0,0.19793,0.80207,0.066806667,0.663691308,0.008334764,0,0,0.0494825,0.098965,0.0494825,0,0,0,0,0,0,0,0,0,0,0,0,0,0

然而,我得到的结果很糟糕(远比简单的线性回归差),看起来像这样: 0.011947,0.448668,0,0,0.095688,0,0.038233,0,0,0,0,0,0,0,0.405464,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

如果我使用300或30000张图片并不重要。我显然做错了什么,我真的很感激一些建议。

代码:

# create dataset
DS = SupervisedDataSet(784, 37)
assert(ia.shape[0] == ta.shape[0])
DS.setField('input', ia)
DS.setField('target', ta)

fnn = buildNetwork( DS.indim, 200, 37, outclass=SoftmaxLayer )

trainer = BackpropTrainer( fnn, dataset=DS, momentum=0.1, verbose=True, weightdecay=0.01)
trainer.trainUntilConvergence(maxEpochs=10,verbose=True,validationProportion=0.20)

1 个答案:

答案 0 :(得分:1)

您的问题是您用于培训的价值观。 softmax图层意味着该图层的所有值将总和为1。因此,当您设置37个输出尺寸时,这意味着所有37个尺寸将总和为1.0。您的样本目标似乎不符合该分布。