我正在尝试训练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。您的样本目标似乎不遵循该分布。