Всем привет,
Я пытаюсь разработать 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));
СМОТРИТЕ ПОЛНЫЙ ОТВЕТ НАЖМИТЕ НА ССЫЛКУ