如何在keras模型中捆绑附近的要素?

时间:2018-10-20 08:03:39

标签: python keras lstm

我有一个模型,其中在模型之前预先训练了字符嵌入和词嵌入。模型的结构如下:

# input and embeddings for characters
char_in = Input(shape=(50, 20,))
emb_char = TimeDistributed(Embedding(input_dim=n_chars + 2, output_dim=10,
                           input_length=20, mask_zero=True))(char_in)
# character LSTM to get word encodings by characters
char_enc = TimeDistributed(LSTM(units=20, return_sequences=False,
                                recurrent_dropout=0.5))(emb_char)

word_in = Input(shape=(50,60,))

# input for EP featur

# main LSTM

x = concatenate([char_enc,word_in])
x = SpatialDropout1D(0.3)(x)
main_lstm = Bidirectional(LSTM(units=50, return_sequences=True,
                               recurrent_dropout=0.6))(x)
crf = CRF(n_tags,learn_mode='marginal')
out = crf(main_lstm)

model_ft = Model([char_in,word_in], out)
model_ft.compile(optimizer="rmsprop", loss=crf.loss_function, metrics=[crf.accuracy])

50是input中的令牌数量,20是每个token中的字符数量,60-每个单词vector的维数(我们使用预先训练的fast_text)。问题是在连接层之后如何捆绑相邻要素(f-2, f-1, f, f+1, f+2)

因此,我们来看一个示例:对于连接层之后的一个输入,我们有50个令牌,对于每个令牌,我们有80d向量(60d-单词嵌入向量,20d-LSTM输出用于字符嵌入)。对于每个我想要的令牌,我们希望有400d向量(例如,它应该包含邻居令牌的特征,例如,如果当前令牌首先输入,对于f-2和f-1,我们将添加零向量)。

那我该怎么办?

0 个答案:

没有答案