问题标签 [language-model]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Keras LSTM/GRU 语言模型的输入形状
我正在尝试在 Keras 中训练单词级别的语言模型。
我有我的 X 和 Y,两者都具有形状(90582L、517L)
当我尝试适合这个模型时:
我得到错误:
我需要一些关于输入形状应该是什么的指导?我已经对各种组合进行了反复试验,但似乎我误解了一些基本的东西。
在 Keras 文本生成示例中,X 矩阵有 3 个维度。我不知道第三维应该是什么。
tensorflow - 使用 NCE 或采样的 softmax 训练 TensorFlow 语言模型
我正在调整 TensorFlow RNN 教程来训练具有 NCE 损失或采样 softmax 的语言模型,但我仍然想报告困惑。然而,我得到的困惑非常奇怪:对于 NCE,我得到了几百万(可怕!),而对于采样的 softmax,我在一个 epoch 后得到了 700 的 PPL(好得令人难以置信?!)。我想知道我做错了什么。
这是我对 PTBModel 的改编:
对这个模型的调用是这样的:
我在这里没有做任何异国情调的事情,更改损失函数应该非常简单。那么为什么它不起作用呢?
谢谢,乔里斯
tensorflow - 语言模型的 TensorFlow 文件管道的简单示例是什么?
我正在 TensorFlow 中构建 RNN 语言模型。我的原始输入由文本文件组成。我能够对它们进行标记,因此我正在使用的数据是作为词汇表索引的整数序列。
按照 中的示例ptb_word_lm.py
,我编写了代码来构建一个语言模型,该模型通过feed_dict方法获取其训练数据。但是,我不想局限于可以放入内存的数据集,所以我想使用文件管道来读取数据。我找不到任何如何做到这一点的例子。
我见过的文件管道示例都有一个长度为n的张量与长度为 1 的张量的标签相关联。(经典示例是 28 x 28 = 784 项张量,表示与单个整数相关联的 MNIST 位图标签范围从 0 到 9。)但是,RNN 训练数据由 n 个连续标记的向量和一个也由n个连续标记组成的标签(在向量前移动一个)组成,例如:
有人可以给我一个代码片段,展示如何编写文件管道以将这种形状的数据输入到 TensorFlow 图中吗?
nlp - 为神经概率语言模型编写代码 Bengio,2003 年。无法理解模型
我正在尝试为yoshua Bengio,2003 的神经概率语言模型编写代码,但我无法理解输入层和投影矩阵之间以及投影矩阵和隐藏层之间的连接。我无法了解单词向量表示的学习究竟是如何进行的。
tensorflow - Tensorflow 中的动态 LSTM 模型
我希望使用 Tensorflow 设计一个 LSTM 模型,其中句子的长度不同。我遇到了一个关于 PTB 数据集的教程(https://github.com/tensorflow/tensorflow/blob/master/tensorflow/models/rnn/ptb/ptb_word_lm.py)。该模型如何捕获不同长度的实例?该示例没有讨论有关填充或其他技术来处理可变大小序列的任何内容。
如果我使用填充,展开尺寸应该是多少?
tensorflow - 批处理期间的 TensorFlow 重置状态 = 句子级语言模型
构建不跨越句子边界的循环语言模型(例如 LSTM)的最佳方法是什么?或者更笼统地说,如果你给模型呈现一个批次,每行包含多个句子,你如何在看到每个句子后重置状态?您可以为模型指定一个特殊的令牌吗?
谢谢!
python - 如何在 Tensorflow 中运行自定义 seq2seq 学习(使用预先计算的词嵌入)编码器-解码器?
我需要在 Tensorflow 中运行一个编码器-解码器模型。我看到使用可用的 APIbasic_rnn_seq2seq(encoder_input_data, decoder_input_data, lstm_cell)
等,可以创建编码器-解码器系统。
- 我们如何在这样的模型中输入诸如 word2vec 之类的嵌入?我知道我们可以进行嵌入查找,但根据 API
encoder_input_data
是一个大小为 batch_size x input_size 的 2D 张量列表。如何在此设置中使用其各自的词嵌入来表示每个词?甚至在embedding_rnn_seq2seq
内部提取嵌入。如何将预先计算的词嵌入作为输入? - 我们如何通过 API 获取成本/困惑度?
- 在测试实例的情况下,我们可能不知道相应的解码器输入。如何处理这种情况?
python - 如何通过Tensorflow/TFLearn中的LSTM同时学习两个序列?
我正在 Tensorflow 平台上学习基于 LSTM 的 seq2seq 模型。我可以很好地在给定的简单 seq2seq 示例上训练模型。
但是,在我必须从给定序列中一次学习两个序列的情况下(例如:同时从当前序列中学习前一个序列和下一个序列),我们该怎么做,即从序列和反向传播计算组合误差两个序列的错误相同?
这是我正在使用的 LSTM 代码的片段(主要取自 ptb 示例:https ://github.com/tensorflow/tensorflow/blob/master/tensorflow/models/rnn/ptb/ptb_word_lm.py#L132 ):
tensorflow - 本文档中的 softmax_w 和 softmax_b 是什么?
我是 TensorFlow 新手,需要训练语言模型,但在阅读文档时遇到了一些困难,如下所示。
我不明白为什么需要这条线,
因为我了解到,一旦计算出输出并且知道 target_words,我们就可以直接计算损失。伪代码似乎增加了一层。另外,没有提到的softmax_w和softmax_b是什么。我想我可能因为提出这样一个简单的问题而错过了一些重要的事情。
请指出我正确的方向,任何建议都将受到高度赞赏。非常感谢。