我一直试图通过https://www.tensorflow.org/tutorials/recurrent来了解示例代码 ,您可以在https://github.com/tensorflow/models/blob/master/tutorials/rnn/ptb找到它./ptb_word_lm.py
(使用tensorflow 1.3.0.)
我总结(我认为是)关键部分,对于我的问题,如下:
size = 200
vocab_size = 10000
layers = 2
# input_.input_data is a 2D tensor [batch_size, num_steps] of
# word ids, from 1 to 10000
cell = tf.contrib.rnn.MultiRNNCell(
[tf.contrib.rnn.BasicLSTMCell(size) for _ in range(2)]
)
embedding = tf.get_variable(
"embedding", [vocab_size, size], dtype=tf.float32)
inputs = tf.nn.embedding_lookup(embedding, input_.input_data)
inputs = tf.unstack(inputs, num=num_steps, axis=1)
outputs, state = tf.contrib.rnn.static_rnn(
cell, inputs, initial_state=self._initial_state)
output = tf.reshape(tf.stack(axis=1, values=outputs), [-1, size])
softmax_w = tf.get_variable(
"softmax_w", [size, vocab_size], dtype=data_type()) …Run Code Online (Sandbox Code Playgroud) 我一直在研究使用 RNN 生成文本,似乎常用的技术是逐个字符输入文本,然后让 RNN 预测下一个字符。
为什么不使用相同的技术,而是使用单词而不是字符。这对我来说似乎是一种更好的技术,因为 RNN 不会犯任何错别字,而且训练速度会更快。
我错过了什么吗?
此外,是否可以创建一个单词预测 RNN,但以某种方式输入在 word2vec 上预先训练的单词,以便 RNN 可以理解它们的含义?
nlp machine-learning deep-learning recurrent-neural-network rnn
我已经在非常短的句子(最多 10 个单词)的语料库上使用 Gensim 训练了 fasttext 模型。我知道我的测试集包括不在我的训练语料库中的词,即我的语料库中的一些词像“催产素”、“Lexitocin”、“Ematrophin”、“Betaxitocin”
给定测试集中的一个新词,fasttext 非常清楚地知道通过使用字符级别 n-gram 生成一个与训练集中其他相似词具有高余弦相似度的向量
如何将 fasttext 模型合并到 LSTM keras 网络中,而不会丢失 fasttext 模型到词汇表中的向量列表?因为那样的话,即使 fasttext 做得很好,我也不会处理任何 OOV。
任何的想法?