Как я могу решить ошибки перекрестной проверки? - PullRequest
0 голосов
/ 26 января 2020

Я скачал K-кратный код Matlab перекрестной проверки по этой ссылке http://mccormickml.com/2013/08/01/k-fold-cross-validation-with-matlab-code/

Чтобы выполнить код перекрестной проверки, я должен иметь все свои точки данных в матрице X, где каждая строка представляет собой отдельную точку данных. У меня также должен быть вектор-столбец y, содержащий категорию (или метку класса) для каждой из соответствующих точек данных.

Для этого я использовал следующую команду:

categories = {'HGG','LGG'};
imds = imageDatastore(fullfile(rootFolder,categories),...
'LabelSource','foldernames');
X = imds.Files;
y = imds.Labels; 

Где imds содержит: imds.Files = 13845x1 ячейка

imds.Labels = 13845x1 categorical
imds.AlternateFileSystemRoots = 0x0 cell
imds.ReadSize = 1
imds.ReadFcn = @readDatastoreImage

, но появляется эта ошибка:

Error using trainNetwork (line 150)
Invalid training data. X must be a 4-D array of images, an
ImageDatastore, or a table.  

Когда я использую эту команду:

[net,info] = trainNetwork(x_train, y_train ,layers,opts);

Я нашел это Команда для устранения этой ошибки, X должна иметь следующую информацию: [height, width, number_of_channels, number of images], поэтому я использую эту команду:

x = [240, 240, 1, 13845];
y = imds.Labels; = 13845x1 categorical

, но появляется эта ошибка:

Index exceeds the number of array elements (1).
Error in categorical/subsref (line 21)
    b.codes = a.codes(s.subs{:});
Error in getFoldVectors (line 54)
    if (any(y_sorted(catStart : catEnd) ~= categories(i)))

Правильно ли y= imds.Labels; = 13845x1 categorical или нет ?, и как я могу решить эту ошибку? Может кто-нибудь помочь мне, пожалуйста?

...