Изменение размера вектора признаков из нейронной сети

#python #keras #deep-learning #pytorch

Вопрос:

Я пытаюсь выполнить задачу аппроксимации двух вложений (текстового и визуального). Для визуального встраивания я использую VGG в качестве кодера. Результатом является 1x1000 встраивание. Для текстового кодера я использую трансформатор, выход которого имеет форму 1x712 . Я хочу преобразовать оба этих вектора в одно и то же измерение 512.

 img_features.shape, txt_features.shape = (1,1000),(1,712)
 

Как я могу это сделать в PyTorch?
Добавьте последний слой в каждую архитектуру, которая моделирует выходные данные до 512?

Ответ №1:

  • Вы можете либо применить дифференцируемый оператор PCA, такой как torch.pca_lowrank .
  • В качестве альтернативы более простым решением является использование двух полностью подключенных слоев адаптера для изучения двух сопоставлений. Один для ваших функций изображения 1000 -> n , другой для текстовых функций: 712 -> n . Затем вы можете выбрать стратегию слияния, чтобы объединить две сформированные функции (1,n) : либо с помощью объединения, точечного сложения/умножения (в этих случаях n должно быть равно 512 . Если вы можете изучить окончательное сопоставление n*2 -> 512 .