使用Keras进行单词嵌入的Conv2D

时间:2018-02-01 14:38:37

标签: tensorflow keras keras-layer

我正在研究Keras的文本分类研究。我使用W2V来表示我的词汇量。

首先,我创建了一个输入层:

input_layer= Input(shape (windows_size, ), dtype='int32', name='word_input')

其次,加载预先训练好的嵌入:

embd = Embedding(embeddings.shape[0],
                 embeddings.shape[1],
                 input_length=input_len,
                 weights=[embeddings],
                 trainable=False,
                 name='word_embed')(input_layer)

第三,我申请Conv1D

conv_net  =Conv1D(filters, kernel_size, activation='relu')(embd)

对于Conv1D,它完美无缺。但是,现在我想使用两种嵌入来表示输入文本,例如W2v和手套。然后,我的输入文本将具有 3维,即输入句子可以看作宽度为3,高度为1且深度为2的图像(两个嵌入)。

我尝试创建一个输入图层

input_layer= Input(shape (windows_size, ), dtype='int32', name='word_input')

我的问题是:如何为两种类型的嵌入创建嵌入?

    embd = Embedding(embeddings.shape[0], # embeddings width
                     embeddings.shape[1], # embeddings length
                     input_length=input_len,                         
                     weights=[embB_W2V, embd_GloVe], # Here I want to pass two embedding array. One for Glove and one for W2v
                     trainable=False,
                     name='word_embed')(input_layer)

conv_net = Conv2D(filters = 64,kernel_size = 3,activation =' relu')(embed_layer_ft)

但它不起作用,因为权重= [embB_W2V,embd_GloVe]大小与嵌入匹配错误

1 个答案:

答案 0 :(得分:0)

您可以使用2层嵌入并合并它们。