Я тренирую сверточную нейронную сеть для классификации изображений в условиях тумана (3 класса). Однако для каждого из 150 000 изображений у меня также есть четыре метеорологические переменные, которые могут помочь в прогнозировании классов изображений. Мне было интересно, как я могу добавить метеорологические переменные (например, температуру, скорость ветра) к существующей структуре CNN, чтобы она могла помочь в классификации.
Один из способов, который я уже могу придумать, - это создание другой (небольшой) нейронной сети с прямой связью вдоль CNN, а затем объединение выходов слоев CNN и скрытых слоев нейронной сети без изображения друг с другом в плотном слое.
Второй способ, который я мог придумать, это просто связать эти элементы с плотным слоем. Однако в этом случае переменные, не относящиеся к изображению, будут (я думаю) способны только делать линейные предсказания.
Существуют ли другие (более совершенные) способы включения в модель функций, не связанных с изображениями? И какой метод рекомендуется, учитывая количество данных, которые у меня есть?
Другой вопрос, который у меня есть, заключается в том, должен ли я размораживать сверточные слои во время тренировки с этими не-образными функциями? Эти слои Resnet-18 (которые были инициализированы как предварительно обученные в ImageNet) уже были настроены с использованием изображений. Я предполагаю, что я должен держать их в замороженном состоянии и только разморозить плотный слой, поскольку только здесь элементы, не относящиеся к изображению, вступают в «контакт» с элементами изображения (не ранее в CNN). Если я ошибаюсь, скажите, пожалуйста!
Ответы:
Мое решение похоже на вашу первую рекомендацию, но с небольшими изменениями.
Вы можете использовать обычные функции стоимости для этой архитектуры.
источник
Concatenate()
слоями?Concatenate()
илиconcatenate()
слои? Я не могу сказать разницу