Всем привет,

Я пытаюсь разработать CNN для регрессии, следуя этому примеру Matlab. Он использует массив 4D для хранения изображений и вектор для хранения значений, связанных с каждым изображением. Я использую этот код для создания 4D-массива под названием «база данных», который содержит мои изображения и векторные «метки», содержащие значения.

k = 1;
%2cm
for i = 1:1000 
    str = sprintf('images/2cm/%d.jpg', i);
    image_to_store = imread(str);
    database(:,:,1,k) = (image_to_store(:,:)); % images are in grey scale
    labels(k) = 2;
    k = k+1;
end
%20cm
for i = 1:1000
    str = sprintf('images/20cm/%d.jpg', i);
    image_to_store = imread(str);
    database(:,:,1,k) = (image_to_store(:,:));
    labels(k) = 20;
    k = k+1;
end
% ...

Теперь у меня есть четырехмерный массив и вектор, поэтому я пытаюсь разделить их на обучающий набор и проверочный набор, как это предлагается в приведенном примере. Может ли кто-нибудь помочь мне понять, как я могу это сделать?

ПРИМЕЧАНИЕ. 

Matlabsolutions.com предоставляет последнюю Помощь по домашним заданиям MatLab, Помощь по заданию MatLab для студентов, инженеров и исследователей в различных отраслях, таких как ECE, EEE, CSE, Mechanical, Civil со 100% выходом. Код Matlab для BE, B.Tech ,ME,M.Tech, к.т.н. Ученые со 100% конфиденциальностью гарантированы. Получите проекты MATLAB с исходным кодом для обучения и исследований.

Надеюсь, это делает то, что вы хотели:

% Your data set:
% The first 1000 entries with labels 2cm,
% The second 1000 entries with labels 20cm,
database = rand(28,28,1,2000);

% percentage of training points = 70%, validation = 30%, test = 0% 
p=0.7;
% One way to divide the 2000 database entries 
[trainInd,valInd,testInd] = dividerand(2000,p,1-p,0);
trainDatabaseBad = database(:,:,:,trainInd);
valDatabaseBad = database(:,:,:,valInd);
size(trainDatabaseBad) % output: 28 28 1 1400
size(valDatabaseBad) % output: 28 28 1 600
% A better way to divide, which ensures that
% there is equal propotion of 2cm to 20cm samples in
% the training set, validation set, and the whole set
[trainInd1,valInd1,testInd1] = dividerand(1000,p,1-p,0);
[trainInd2,valInd2,testInd2] = dividerand(1000,p,1-p,0);
trainDatabase = cat(4, database(:,:,:,trainInd1), database(:,:,:,trainInd2));
valDatabase = cat(4, database(:,:,:,valInd1), database(:,:,:,valInd2));

СМОТРИТЕ ПОЛНЫЙ ОТВЕТ НАЖМИТЕ НА ССЫЛКУ