Tensorflow:维度子集上的LSTM和卷积(避免重叠?)

时间:2017-04-25 20:19:56

标签: tensorflow

我为NLP实现了一个非常标准的LSTM模型,我用预训练嵌入来初始化每个单词。对于每个单词向量,我想要连接字符序列的LSTM编码(对于该单词)和字符序列的卷积编码(对于该单词)。

我的输入张量具有以下形状:[批量大小,最大字序列长度,最大字符序列长度,字母字母大小]。如果我沿着维度0解包,我得到形状的张量[最大字序列长度,最大字符序列长度,字母大小],我可以轻松地运行LSTM / 1D-Convolution。然而,这显着减慢了图形创建速度,模型训练似乎也明显变慢。

这里是LSTM编码的代码:

chars = tf.unstack(chars, axis=0)
lengths = tf.unstack(lengths, axis=0)

lstm_word_embeddings = []
for i, (char, length) in enumerate(zip(chars, lengths)):
    reuse = i != 0
    embedding = lstm_encoder(char, length, embed_dim, scope=scope, reuse=reuse)
    lstm_word_embeddings.append(embedding)
lstm_word_embeddings = tf.stack(lstm_word_embeddings, axis=0)

有更好的方法吗?

0 个答案:

没有答案