2

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

1 回答 1

1

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

于 2014-03-03T23:02:23.000 回答