Я пытаюсь обучить нейронную сеть с прямой связью в MATLAB, которая использует вектор признаков SURF и метки классов в качестве входных данных, как описано в этом вопросе, заданном ранее: Ввод функции SURF в нейронную сеть в MATLAB .
Я использовал подход «набора функций», но получаю ошибку: «При входе и цели у меня различное количество выборок» при попытке обучить модель.
У меня 71 класс изображенийкаждый из которых содержит 176 тренировочных образов (всего 12496 изображений).Используя извлечение признаков SURF, я создаю размер массива [500 x 12496].У меня также есть вектор размера меток обучения [12496 x 1], соответствующий классу каждого изображения в данных обучения.
Как мне преобразовать эти векторы, чтобы я мог тренировать свою сеть илинеправильно понял проблему?
Код, который я реализую, выглядит следующим образом:
feature_vector_train = encode(SURF_bag, trainingSets);
feature_vector_train_T = feature_vector_train'; % Attempted using transpose
feature_vector_validation = encode(SURF_bag, validationSets);
feature_vector_validation_T = feature_vector_validation'; % Attempted using transpose
%% Create class label vectors
classes_count = size(trainingSets,2);
class_images_count_training = trainingSets.Count;
class_images_count_validation = validationSets.Count;
labels_vector_train = [];
labels_vector_validation = [];
for i = 1:classes_count
for j = 1:class_images_count_training
labels_vector_train = [labels_vector_train;i];
end
for k = 1:class_images_count_validation
labels_vector_validation = [labels_vector_validation;i];
end
end
%% Feed feature vector into classifier (SVM) and test performance on validation set
SURF_MLP_classifier = feedforwardnet();
SURF_MLP_classifier.trainParam.epochs=5000;
SURF_MLP_classifier = configure(SURF_MLP_classifier,feature_vector_train_T,labels_vector_train);
%% ERROR LINE
SURF_MLP_classifier = train(SURF_MLP_classifier,feature_vector_train_T,labels_vector_train);