Я обучил сеть двум разным модальным изображениям. Я передаю данные вместе в одном слое, но после этого это почти две параллельные сети, они не разделяют слой, и две задачи имеют разные наборы меток, поэтому у меня есть два разных уровня потерь и точности (я использую кафе кстати). Я хотел бы изучить эти задачи вместе. Например, предсказание класса задачи 1 должно быть выше при наличии задачи 2, предсказывающей определенную метку класса. Я не хочу присоединяться к ним на уровне функций, но на уровне прогнозирования. Как мне это сделать?
Как совместно выучить две задачи на уровне предсказания?
Ответы (1)
Почему вы не хотите присоединяться к прогнозу на уровне объекта?
Если вы действительно хотите придерживаться своей идеи не присоединяться к каким-либо слоям сети, вы можете применить CRF или SVM поверх общего конвейера прогнозирования, чтобы изучить взаимные корреляции между прогнозами. Для любого другого метода вам нужно будет так или иначе комбинировать функции внутри сети. Однако я настоятельно рекомендую, чтобы вы подумали об этом. Это общая тема глубокого обучения: делать что-то внутри сети лучше, чем делать это снаружи.
Из того, что я узнал, экспериментируя с совместным прогнозированием, вы получите максимальный прирост производительности, если разделите веса между всеми свёрточными слоями сети. Затем вы можете применить независимые fc-слои, а затем регрессию softmax и отдельные функции потерь поверх совместно предсказанных функций. Это позволит сети изучить взаимную корреляцию между функциями, в то же время она сможет делать отдельные прогнозы.
Взгляните на мой документ MultiNet в качестве хорошей отправной точки. Весь наш обучающий код находится на github.