内蔵の関数を使用せずに0から9までの数字を認識して10倍のクロスバリデーションを実行しようとしました。私は500ピクチャのサンプルを持っています(訓練とテストの各桁は50です)。MATLAB: 10 fold cross Validation without using existing functionsそれ以外のウェブサイトはそれほど役に立ちませんでした。私がMATLABを初めて使ったので、私はそれを微調整するために何をすべきかについてよく分かりません。 これはこれまでのコードです。MATLABで組み込み関数を使用せずに10倍のクロスバリデーションを行う方法は?
c=zeros(10,size(x,2),size(x,3));
K=10;
k=10;
test= 1:50/K;
for fold =1:K
if(test(1)~=1)
train = x(1:test(1)-1,:,:);
if (test(5) ~=50)
train=[train ; x(test(end):50,:,:)];
end
else
train = x(test(1):50,:,:);
end
test = test+ones(1,50/K)*50/K;
end
for i =0:9
test=test+50/K*ones(1,5);
c(i+1,:,:)=cal_likelihood(x(1+i*50:50+i*50,:,:),50/k*(k-1));
end
変数説明
- xが、それはすべての500桁の絵を保つダブル500x28x28です。
- テストはテストセットです。
- trainはトレーニングセットです。電車を45
- 第二倍に:1::テストのための5、6 10倍を行うために
は私が
- 第一倍のようなトレーニングセットを変更する必要がある検証を横断6時10分テストのために、1:5 11:50列車など
問題は、トレーニングセットを6:45から1:5および11のように別のセットにシフトする方法がわかりません:50。またはこれより良いループを書くことはできますか?
PSS。これに答える人が気にしないのであれば、500x28x28倍は実際に何を意味しますか?
「500x28x28 double」は、[多次元配列](実際には3次元配列)であることを意味します。ディメンション '500'は例(あなたのケースの数字ピクチャ)の数を表し、28x28は各ピクチャの長さと幅を表します(各ピクチャは28x28のマトリックスで表されます)。 – uyaseen
@ uyaseenありがとうございます。 – RHLS