如何在get_keras_embedding中使用填充值

时间:2018-08-06 12:24:26

标签: keras gensim word2vec word-embedding

我尝试将gensim的get_keras_embedding集成到Keras模型中。

首先我要进行文本预处理

  1. text_to_word_sequence将文本转换为令牌序列
  2. w2v.vocab[tok].index将单词转换为gensim的单词索引
  3. pad_sequences(sequences, maxlen=MAX_SEQUENCE_LENGTH, value=999999)填充有一定价值

然后我建立一个模型

embedding_layer = w2v.get_keras_embedding(train_embeddings=False)
...
sequence_input = Input(shape=(MAX_SEQUENCE_LENGTH,), dtype='int32')
embedded_sequences = embedding_layer(sequence_input)
...
x = Conv1D(100, kernel_size, activation='relu', padding='same', strides=1)(embedded_sequences)

显然问题出在填充值上。默认值是0,这是gensim word2vec中的“ the”,如果我使用不存在的值,它将失败并显示以下错误消息。 gensim word2vec使用填充的正确方法是什么?

InvalidArgumentError (see above for traceback): indices[48,0] = 999999 is not in [0, 400000)
     [[Node: embedding_1/embedding_lookup = Gather[Tindices=DT_INT32, Tparams=DT_FLOAT, _class=["loc:@embedding_1/embeddings"], validate_indices=true, _device="/job:localhost/replica:0/task:0/device:CPU:0"](embedding_1/embeddings/read, _arg_input_1_0_3)]]

我将不胜感激。

0 个答案:

没有答案