我正在尝试训练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)

最佳答案

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

07-27 22:49