Можно ли создать CNN с реальным выходом?
Тип вывода trainNetwork() должен быть категориальным (). Как я могу создать CNN с float/real output(s)?
Я имею в виду, что следующая команда выдает следующую ошибку:
>> convnet = trainNetwork(input_datas, [0.0, 0.1, 0.2, 0.3], networkLayers, opts);
Error using trainNetwork>iAssertCategoricalResponseVector (line 269)
Y must be a vector of categorical responses.
(Сообщение об ошибке соответствует вектору [0.0, 0.1, 0.2, 0.3]), но мне нужны реальные результаты, а не категории.
Сетевые слои следующие:
>> networkLayers=
5x1 Layer array with layers:
1 '' Image Input 1x6000x1 images with 'zerocenter' normalization
2 '' Convolution 10 1x100 convolutions with stride [1 1] and padding [0 0]
3 '' Max Pooling 1x20 max pooling with stride [10 10] and padding [0 0]
4 '' Fully Connected 200 fully connected layer
5 '' Fully Connected 1 fully connected layer
2 ответа
Ответ состоит из двух частей
1. Классификация против регрессии.
Регрессия: выходная переменная принимает непрерывные значения.
Классификация: выходная переменная принимает метки классов.
Таким образом, моя проблема была (когда я задаю вопрос), что мне нужна нейронная сеть для проблем регрессии, а не для классификации.
2. Matlab рамки
Есть два основных способа работы с нейронными сетями в Matlab.
Более старая структура определяла всю сеть, используя класс "Нейронная сеть". Таким способом можно легко создать некоторую базовую сеть (например, с помощью feedforwardnet или layrecnet), но создание более сложных сетей - сложная работа. Более подробную информацию о создании пользовательских нейронных сетей с классом сети можно найти здесь.
Более новая методология была введена в R2016a. Введение можно найти здесь. Я пытался использовать эту структуру. Но эта структура поддерживает проблемы регрессии только с 2017a! Так что это действительно новый инструмент. Но здесь можно найти описание использования новой структуры для решения проблем регрессии.
Для этого вы должны изменить свой последний слой. Это может быть среднеквадратичная функция ошибок. этот вопрос объяснить, как вы можете это сделать
также это называется регрессией. Вы должны добавить функцию потерь вручную.