训练ANN时称量样品

时间:2020-08-18 09:43:45

标签: matlab neural-network weighted

我实际上是在MATLAB上训练ANN以优化泵。我有2000个样本作为泵设计的输入,并作为效率的输出。我有一些不错的结果,但是现在我想重新训练模型。我想重新排列每个样品的重量,以使效率更高的样品比小效率的样品具有更高的重量。

如何通过效率称量样品?

这是我的一部分代码:

Mdl_NN1 = fitnet([6 4],training);
Mdl_NN1.layers{2}.transferFcn = 'purelin';
Mdl_NN1.divideParam.trainRatio = 70/100;
Mdl_NN1.divideParam.valRatio = 15/100;
Mdl_NN1.divideParam.testRatio = 15/100;
Mdl_NN1.trainParam.showWindow  = true;
[Mdl_NN1,TR] = train(Mdl_NN1,XtrainSet',YtrainSet(:,2)')

Xtrainset是泵的6个参数设计,而YtrainSet只是效率。

1 个答案:

答案 0 :(得分:1)

这全都与整理您的数据有关(这尤其适用于NN)。因此,如果您想对某些样本进行加权,则可以将它们复制以进行训练,然后删除其他样本,这是对/错误的。这比摆弄权重或更改训练/测试/验证的部分要好。

一个警告:如果您重复数据,请确保它仅出现在训练集中。如果您考虑相同的示例进行培训和测试,则将获得不可靠的准确性。因此,您可能需要显式设置培训/测试/验证数据。看看文档中的divide data for optimal neural network training

Mdl_NN1.divideFcn = 'divideind';
Mdl_NN1.divideParam.trainInd = % vector with indices
Mdl_NN1.divideParam.testInd = % vector with indices
Mdl_NN1.divideParam.valInd = % vector with indices

或者可能足以设置是否正确订购了数据

Mdl_NN1.divideFcn = 'divideblock';
相关问题