问题标签 [sequence-to-sequence]
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-2.7 - Tensorflow 1.0 Seq2Seq 解码器功能
我正在尝试为时间序列分析制作一个 Seq2Seq 回归示例,并且我使用了 Dev Summit 上介绍的 Seq2Seq 库,该库目前是 Tensorflow GitHub 分支 r1.0 上的代码。
我很难理解解码器功能如何用于 Seq2Seq,特别是“cell_output”。
我知道 num_decoder_symbols 是每个时间步要解码的类/单词的数量。我让它在我可以进行培训的时候工作。但是,我不明白为什么不能只用特征数量 (num_features) 代替 num_decoder_symbols。基本上,我希望能够在没有教师强制的情况下运行解码器,换句话说,将上一个时间步的输出作为下一个时间步的输入传递。
为什么我不需要为单元格输出传递 batch_size?
当尝试使用此代码创建我自己的回归 Seq2Seq 示例时,我没有输出概率/类,而是有一个维度为 num_features 的实值向量,而不是类概率数组。据我了解,我认为我可以用 num_features 替换 num_decoder_symbols,如下所示:
但是,我收到以下错误:
结果,我像这样传递了 batch_size 以获得排名 2 的形状:
但是我收到以下错误,其中 Shape 的排名为 3,而想要排名为 2:
tensorflow - TensorFlow:天然橡胶。时代与天然橡胶。训练步骤
我最近尝试使用 Google 的seq2seq来建立一个小型 NMT 系统。我设法让一切正常,但我仍然想知道模型的时期数和训练步骤数之间的确切差异。
如果我没记错的话,一个 epoch 由多个训练步骤组成,并且一旦你的整个训练数据被处理一次,就已经过去了。但是,当我查看 Google 自己的 NMT 教程中的文档时,我不明白两者之间的区别。请注意以下代码段的最后一行。
在我看来,好像只有一种方法可以定义训练步骤的数量,而不是模型的时期数。术语是否可能存在重叠,因此没有必要定义多个时代?
python - RNN解码器和RNN的区别
我们只使用 RNN 解码器(没有编码器)进行文本生成,RNN 解码器与纯 RNN 操作有何不同?
TensorFlow 中的 RNN 解码器:https ://www.tensorflow.org/api_docs/python/tf/contrib/seq2seq/dynamic_rnn_decoder
TensorFlow 中的纯 RNN:https ://www.tensorflow.org/api_docs/python/tf/nn/dynamic_rnn
谢谢你的时间
nlp - 用于文本摘要的序列到序列模型的细节是什么?
很清楚如何训练编码器-解码器模型进行翻译:每个源序列都有其对应的目标序列(翻译)。但在文本摘要的情况下,摘要比其文章短得多。根据Urvashi Khandelwal 的说法,神经文本摘要每个源句子都有其摘要(更短或更长)。但我几乎不相信存在任何这样的数据集,其中每个句子都有相应的摘要。那么,如果我是对的,训练sunch模型的可能方法是什么?否则是否有任何免费的文本摘要数据集?
deep-learning - seq2seq 模型的训练方法选择
您可能会推荐哪种训练方法来训练基于注意力的序列到序列神经机器翻译模型?SGD、Adadelta、Adam 还是更好的?请给点建议,谢谢。
tensorflow - 如何使用 tf.contrib.seq2seq.Bahdanau注意
我正在尝试在 tf 1.1 中为 seq2seq 模型生成一个简单的代码。我不确定参数“查询机制的深度”是什么。我在创建注意力机制时遇到错误,说:
这是我的代码。我在正确的轨道上吗?我找不到任何详细的文档。
tensorflow - 通过在 google/seq2seq 中创建 AttentionSeq2Seq 运行块
最近谷歌发布了 seq2seq 算法的新实现:https ://github.com/google/seq2seq/blob/master/docs/nmt.md 。他们改变了代码的整个内部结构。我试图为我的目的修改代码(我创建了新的 InputPipeline 解码器)。当我在不做任何修改的情况下运行代码时,它运行良好:所有任务调用和训练启动都没有任何问题。开始创建实验后,tensorflow 显示有关创建所有钩子的消息:
这部分工作正常。但在那之后,原代码调用train模式下创建AttentionSeq2Seq、词汇表查找表、BidirectionalRNNEEncoder、AttentionLayerDot、AttentionDecoder、ZeroBridge 任务:
这部分创建 AttentionSeq2Seq、词汇表查找表等任务在我修改后不会启动。您能否解释一下,这些任务是如何在原始版本中启动的?
python - TensorFlow 中的计划采样
最新的关于 seq2seq 模型的 Tensorflow api 包含了定时采样:
https://www.tensorflow.org/api_docs/python/tf/contrib/seq2seq/ScheduledEmbeddingTrainingHelper https://www.tensorflow.org/api_docs/python/tf/contrib/seq2seq/ScheduledOutputTrainingHelper
预定采样的原始论文可以在这里找到: https ://arxiv.org/abs/1506.03099
我阅读了论文,但我无法理解 和 之间的ScheduledEmbeddingTrainingHelper
区别ScheduledOutputTrainingHelper
。文档只说ScheduledEmbeddingTrainingHelper
是一个添加计划采样ScheduledOutputTrainingHelper
的训练助手,而是一个直接将计划采样添加到输出的训练助手。
我想知道这两个助手之间有什么区别?
tensorflow - 无法理解 tf.contrib.seq2seq.TrainingHelper
我设法在 1.1 版本中使用tf.contrib.seq2seq类在tensorflow中构建了一个序列到序列模型。
要知道我使用TrainingHelper来训练我的模型。但是这个助手是在解码器中提供先前解码的值以进行训练还是只提供基本事实?如果不是,我如何将先前解码的值作为解码器的输入而不是地面真值提供?
tensorflow - tf.scatter_nd_update 变量需求与 RNN.__call__ 方法
我正在开发 RNN 并使用 Tensorflow 1.1。我收到以下错误:
tensorflow.python.framework.errors_impl.InvalidArgumentError: The node 'model/att_seq2seq/encode/pocmru_rnn_encoder/rnn/while/Variable/Assign' has inputs from different frames. The input 'model/att_seq2seq/encode/pocmru_rnn_encoder/rnn/while/Identity_3' is in frame 'model/att_seq2seq/encode/pocmru_rnn_encoder/rnn/while/model/att_seq2seq/encode/pocmru_rnn_encoder/rnn/while/'. The input 'model/att_seq2seq/encode/pocmru_rnn_encoder/rnn/while/Variable' is in frame ''.
该错误是由动态 rnn 方法中的 lambda 函数和我的 RNN 中的一段代码引起的。
- tensorflow rnn.py "dynamic_rnn / _dynamic_rnn_loop / _time_step" 表示使用 lambda 函数调用 RNN。call方法循环遍历所有输入。
- 我的代码:
if type(myObject) != tf.Variable: tp = tf.Variable(myObject, validate_shape=False) else: tp = myObject
从逻辑上讲,我反复使用 tf.scatter_nd_update 来更新 myObject。伪代码就像myObject = scatter_nd_update(myObject, indices, updates)
. 由于 tf.scatter_nd_update 需要变量作为参数并返回张量,因此我需要将张量包装到变量中。因此上面的代码(测试变量然后换行)。我应该如何修改我的代码以使其工作?谢谢!