我需要使用训练集中的整个数据集训练patternnet
神经网络,而不是用于验证或测试。我发现了两种方法,它们在命令窗口中运行良好,但在脚本中却没有,返回错误。
方法1:
mynet.divideFcn = '';
方法2:
mynet.divideParam.trainRatio = 1;
mynet.divideParam.valRatio = 0;
mynet.divideParam.testRatio = 0;
和代码:
mynet=patternnet([]);
P=rand(10,1000);
T=rand(2,1000);
[mynet,tr]=train(mynet,P,T);
使用 Matlab R2012b Windows XP 32位
答案 0 :(得分:1)
为什么你不能在脚本中使用任何一种方法?
将问题的不同部分放在一个脚本中,如下所示在2015b中运行没有错误...
mynet=patternnet([]);
% Edit mynet before training it
mynet.divideParam.trainRatio = 1;
mynet.divideParam.valRatio = 0;
mynet.divideParam.testRatio = 0;
P=rand(10,1000);
T=rand(2,1000);
[mynet,tr]=train(mynet,P,T);
修改强>
您的难度可能是使用2012b语法的细微变化,因此参考旧文档很好:
https://uk.mathworks.com/help/releases/R2012b/nnet/ref/patternnet.html
您希望使用dividetrain
,它会为您的数据指定索引,完全用于培训。
[trainInd,valInd,testInd] = dividetrain(Q,trainRatio,valRatio,testRatio)将所有目标分配给训练集,而不将任何目标分配给验证或测试集。
Inputs:
Q = Number of targets to divide up.
Ratios = ratios of each data use type
Outputs:
trainInd = Training indices equal to 1:Q
valInd = Empty validation indices, []
testInd = Empty test indices, []
在您的情况下,您可以手动创建此功能,但值得了解这些功能是否存在,例如,如果您需要特定比率,请使用divideint
。
然后尝试使用
P=rand(10,1000);
T=rand(2,1000);
mynet=patternnet([]);
% Edit mynet before training it
mynet.divideParam.trainInd = trainInd; % 1:size(P,1)
mynet.divideParam.valInd = valInd; % []
mynet.divideParam.testInd = testInd; % []
[mynet,tr]=train(mynet,P,T);
注意:我没有2012b,因此无法为您完全测试。