如何将Word2vec生成的功能与VGGNet生成的功能连接

时间:2020-04-19 06:44:52

标签: python numpy word2vec vgg-net

我正在处理从IMDB站点删除的电影数据集。更重要的是,我正在研究两个信息,即电影概述和电影海报数据。

在第一部分中,我处理概述数据并使用word2vec进行矢量化。我具有以下功能:

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

(10265, 300)
(10265, 19)

第二部分是在同一部电影上工作,但使用像VGGNet这样的预训练模型在海报图像(单个图像形状=(224,224,3))中创建功能。我最终得到如下信息:

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的问题。因此,我需要将word2vec的X功能和VGGNET的X功能带入相同的形状,例如:

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

    (10265, 512)
    (10265, 19)

也许转置这些数组可能是一个解决方案。或者创建像

的张量
X_combined= (10265,25088,300)
Y=(10265, 19)

我还是很困惑。这里需要一些指导。

1 个答案:

答案 0 :(得分:0)

仅Word2vec会为单词创建矢量。您是否正在执行另一步骤,例如将描述的所有单词平均在一起,以获得多单词文本的300维矢量?

这可以作为简单的基准,但是与矢量化多词文本的其他方法相比,可能会失去一些细微之处。另外,如果您是从自己的文本数据中创建单词向量的,那么只需10,265条简短说明-可能每个句子几个? –是用于创建300维字向量的非常强大的训练集。

也就是说,如果每个电影文本有300个尺寸(每个10265行,每个300个特征),则每个电影海报有25088个尺寸(每个10265行,每个25088个特征),然后将它们串联起来,则每部电影将有25388个尺寸(每10265行包含300 + 25088个功能)。

从两个单独的mod(...)数组中,串联很简单:

X

但是,您确定下一步可以处理如此广泛的输入吗? (您是否应该对图像特征使用其他更窄的摘要/降维?)