質問: spliteachlabel(imds,0.7,'randomize'); 下記コード以降に交差検定を導入するコードを導入するかと思うのですが、現状アイディアが思い浮かびません。
回答: [imds01,imds02,imds03,imds04,imds05,imds06,imds07,imds08,imds09,imds010]... = spliteachlabel(imds,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,'randomize'); imdstrain1 = imagedatastore(cat(1,imds01.files,imds02.files,imds03.files,imds04.files,imds05.files,imds06.files,imds07.files,imds08.files,imds09.files)); imdstrain1.labels = cat(1,imds01.labels,imds02.labels,imds03.labels,imds04.labels,imds05.labels,imds06.labels,imds07.labels,imds08.labels,imds09.labels); 交差検証であれば、crossvalの関数で、任意の分割数で交差検証ができます。その際、実行するコードをfunction化して、 入れ子にすればよいです。 ただ、上のように、かなり無理やりではありますが、全画像を10個に分けたほうがわかりやすいかもしれません。添付のファイルを実行してみてください。 imdsとして、全画像を読み込む spriteachlabelで10個に分ける imdstrain〇として、10個分に分ける 以下for文 for i=1:10 imdstrain〇(〇にはiの値)で訓練データ imdsvalidation〇(〇には10-iの値、はじめにimdstrain〇には、imds0〇だけ除外するようにしておく) 通常の流れにそって、imdstrainで訓練し、imdsvalidationでテストする end https://jp.mathworks.com/help/deeplearning/examples/create-simple-deep-learning-network-for-classification.html この手書き文字の判別を10点交差検証で行っています。時間がかかるので、maxepochsを1にしています。4にすれば、精度があがるはずです。