Можно ли обучить CNN в наборе данных и проверить его в другом наборе данных с другими классами? - PullRequest
0 голосов
/ 23 января 2019

Я новичок в области глубокого обучения и занимаюсь исследованиями с использованием CNN.Мне нужно натренировать модель CNN на наборе данных изображений (изображения ориентира) и протестировать ту же модель, используя другой набор данных (тоже изображения ориентира).Одна из мотиваций - увидеть способность модели обобщать.Но проблема в том, что набор данных, используемый для обучения и тестирования, не совпадает, классы не совпадают!Возможно, число классов тоже, что означает, что прогнозы, сделанные на тестовом наборе данных, не заслуживают доверия (так как веса выходного слоя были рассчитаны на основе различных классов, принадлежащих к набору данных поезда).Есть ли способ оценить модель в другом наборе данных, не влияя на точность теста?

Ответы [ 2 ]

0 голосов
/ 23 января 2019

Производительность нейронной сети в одном наборе данных обычно не будет такой же, как в другом. Изображения в одном наборе данных различить труднее, чем в другом. Практическое правило: если ваши наборы данных ориентир похожи, вероятно, производительность будет аналогичной. Однако это не всегда так: незначительные различия между наборами данных могут привести к значительным различиям в производительности.

Вы можете учесть потенциально различную производительность в двух наборах данных, обучив другую сеть в другом наборе данных. Это даст вам базовый уровень того, что ожидать, когда вы попытаетесь обобщить свою сеть на него.

Вы можете применить свою нейронную сеть, обученную для одного набора классов, к другому набору классов. Есть два основных подхода к этому:

  • Трансферное обучение . Здесь последний слой вашей обученной сети заменяется новым (и) слоями, которые обучаются сами по себе для классификации новых изображений. (Используйте для многих классов. Можно использовать для нескольких классов.)
  • Всеобучение . Вместо того, чтобы заменить последний слой, добавьте новый слой после него и тренируйте только последние слои. (Используйте для нескольких классов.)

Оба подхода намного быстрее, чем обучение нейронной сети с нуля.

0 голосов
/ 23 января 2019

Я предполагаю, что вы столкнулись с проблемой классификации.

Что вы имеете в виду в явном виде?У вас есть классы AB и C в вашем наборе данных поезд и те же классы в вашем наборе тестовых данных с другой маркировкой, или у вас есть полностью разные классы в вашем тестовом наборе данных относительно вашего набора данных поезда?

Вы можете решить первую проблему, создав отображение от метки поезда до метки теста или наоборот.Второе зависит от того, чего вы пытаетесь достичь ... Если вы хотите, чтобы модель предсказывала классы, которые никогда не обучались, вы не получите никакого результата.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...