Как объединить сгенерированные функции word2ve c с функциями, сгенерированными VG GNet - PullRequest
0 голосов
/ 19 апреля 2020

Я работаю над набором данных mov ie, удаленным с сайта IMDB. Что еще более важно, я работаю над двумя информационными обзорами iemov ie и плакатами mov ie.

В первой части я обрабатываю данные обзора и векторизую их, используя word2ve c. Я получаю следующие функции:

print(X.shape);print(Y.shape)

(10265, 300)
(10265, 19)

Вторая часть - работа над теми же фильмами, но создание функций из изображений постеров (форма одного изображения = (224 224,3) с использованием предварительно обученной модели, такой как VG GNet. В итоге я получаю следующее:

print(X.shape);print(Y.shape)

(10265, 25088)  ## image feature generated from frozen layers = 7 x 7 x 512=20588

(10265, 19)

Мне нужно объединить обе функции и обучить Deep MLP на этих комбинированных разнородных данных для прогнозирования Y (19 классов).

Я сталкиваюсь с проблемой, что MLP требует input_shape в видимом слое, поэтому мне нужно привести X-функцию из word2ve c и X из VG GNET в одну и ту же форму, скажем, например:

 print(X_combined.shape);print(Y.shape)

    (10265, 512)
    (10265, 19)

Может быть транспонировать эти массивы могут быть решением. Или, может быть, создать тензор типа

X_combined= (10265,25088,300)
Y=(10265, 19)

Я все еще в замешательстве. Нужны некоторые указания здесь.

1 Ответ

0 голосов
/ 20 апреля 2020

Word2ve c, один, просто создает векторы для слов. Вы делаете еще один шаг, например, усредняете все слова описания вместе, чтобы получить 300-мерный вектор для текста из нескольких слов?

Это может работать как простая базовая линия, но может потерять тонкости по сравнению с другими методами векторизации текста из нескольких слов. Кроме того, если ваши словосочетания созданы из ваших собственных текстовых данных, то всего 10 265 коротких описаний - может быть, по несколько предложений в каждом? - это очень, очень слабый обучающий набор для создания 300-мерных слов-векторов.

Тем не менее, если у вас есть 300 измерений из каждого текста mov ie (10265 строк по 300 объектов в каждом), то 25088 измерений из каждого плаката mov ie (10265 строк по 25088 элементов в каждом), затем их объединение приведет к 25388 измерениям на ход ie (10265 строк по 300 + 25088 элементов в каждом).

Из двух отдельных X массивов конкатенация проста:

In [15]: X_text.shape                                                                     
Out[15]: (10265, 300)
In [16]: X_poster.shape                                                                   
Out[16]: (10265, 25088)
In [17]: X_combined = np.concatenate((X_text, X_poster), axis=1)                          
In [18]: X_combined.shape                                                                 
Out[18]: (10265, 25388)

Но уверены ли вы, что ваш следующий шаг сможет обработать такой широкий ввод? (Должны ли вы, возможно, использовать какое-то другое более узкое / размерное уменьшение возможностей изображения?)

...