问题标签 [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.

0 投票
1 回答
568 浏览

tensorflow - 聊天机器人的 Seq2Seq 模型

我正在构建一个聊天机器人,它具有序列到序列编码器解码器模型,如NMT中。从给定的数据中,我可以理解,在训练时,它们将解码器输出与编码器单元状态一起馈送到解码器输入中。我无法弄清楚当我实际实时部署聊天机器人时,我应该如何输入解码器,因为那时我必须预测输出。有人可以帮我解决这个问题吗?

0 投票
1 回答
1196 浏览

tensorflow - tensorflow embedding_lookup 是否可微分?

我遇到的一些教程使用随机初始化的嵌入矩阵进行描述,然后使用该tf.nn.embedding_lookup函数获取整数序列的嵌入。我的印象是,由于embedding_matrix是通过 获得tf.get_variable的,优化器会添加适当的操作来更新它。

我不明白的是如何通过查找功能发生反向传播,这似乎是硬而不是软。这个操作的梯度是多少?它的输入ID之一?

0 投票
1 回答
748 浏览

machine-learning - Attention Mechanism 中的“源隐藏状态”指的是什么?

注意力权重计算为:

在此处输入图像描述

我想知道h_s指的是什么。

在 tensorflow 代码中,编码器 RNN 返回一个元组:

正如我所想,h_s应该是encoder_state,但是github/nmt给出了不同的答案?

我误解了代码吗?或者h_s实际上意味着encoder_outputs?

0 投票
0 回答
945 浏览

tensorflow - TensorFlow BeamSearchDecoder 将 sample_id 输出为(实际 sample_id+1)

  • 我是否编写了自定义代码(而不是使用 TensorFlow 中提供的股票示例脚本):是的。基于 NMT 教程,我正在为自己的任务编写自定义代码。
  • 操作系统平台和发行版(例如,Linux Ubuntu 16.04):Linux Ubuntu 14.04 LTS
  • TensorFlow 安装自(源代码或二进制文件):Source
  • TensorFlow 版本(使用下面的命令):1.5
  • Python版本:3.6.3
  • Bazel 版本(如果从源代码编译):0.9.0
  • GCC/编译器版本(如果从源代码编译):5.4.1
  • CUDA/cuDNN 版本:CUDA 8.0、cuDNN 6
  • GPU型号和内存:1080 Ti
  • 重现的确切命令:将通过这篇文章进行解释。

我正在编写基于 NMT 教程代码的 Seq2Seq 代码。(https://github.com/tensorflow/nmt

我已将解码器的输出投影仪修改为全连接层,而不仅仅是教程代码中的线性投影仪。通过定义以下自定义层类:

自定义层.py

https://github.com/kami93/ntptest/blob/master/customlayer.py

然后像这样初始化自定义层:

然后像这样把层作为 BeamSearchDecoder 的 output_layer

最后像这样得到输出sample_id

问题就出现在这里。

因为我的自定义层的最后一个输出维度是“757”,所以我希望 sample_id 应该是自定义层输出的 argmax id 的索引,它应该在 [0,756] 之间。

但是,返回的实际 sample_id 介于 [1,757] 之间(即返回“我的预期 sample_id + 1”)。

在https://github.com/tensorflow/tensorflow/blob/r1.5/tensorflow/contrib/seq2seq/python/ops/beam_search_decoder.py检查 tf.contrib.seq2seq.BeamSearchDecoder 的实际代码 ...是在“line 510”和“line 652”之间的行上执行“_beam_search_step”,

在第 545 行,vacab_size 被收集为 757。

在第 577 行,在所有嵌套的“K*757”假设中确定具有最高 K(Beam width) softmax 概率的索引。

在第 595 行,通过模运算计算实际指数。

结果,我认为 [1,757] 之间的索引完全没有必要作为 sample_id 返回。至少由于 757 的模运算严格返回 [0,756] 之间的值,因此我认为永远不应该返回 757 的 sample_id。但我实际上得到了它。

有人可以建议为什么我得到[1,757]的样本ID,而不是[0,756]?

0 投票
1 回答
364 浏览

recurrent-neural-network - 没有 MAX_LENGTH 的 AttentionDecoderRNN

来自 PyTorch Seq2Seq 教程,http ://pytorch.org/tutorials/intermediate/seq2seq_translation_tutorial.html#attention-decoder

我们看到注意力机制在很大程度上依赖于MAX_LENGTH参数来确定 的输出维度attn -> attn_softmax -> attn_weights,即

进一步来说

我知道MAX_LENGTH变量是减少数字的机制。中需要训练的参数AttentionDecoderRNN

如果我们没有MAX_LENGTH预先确定。我们应该用什么值来初始化attn层?

会是output_size吗?如果是这样,那么这将是学习与目标语言中完整词汇相关的注意力。这不是 Bahdanau (2015) 关注论文的真正意图吗?

0 投票
1 回答
341 浏览

python - 如何在 Tensorflow 中使用动态 rnn 构建解码器?

我知道如何在 Tensorflow 中使用动态 rnn 构建编码器,但我的问题是我们如何将它用于解码器?因为在每个时间步的解码器中,我们应该提供前一个时间步的预测。提前致谢!

0 投票
1 回答
165 浏览

tensorflow - Tensorflow seq2seq:张量'对象不可迭代

我在下面的代码中使用 seq2seq,我发现以下错误:

但我得到了错误:

我查了一下,它来自 seq2seq 行。

0 投票
0 回答
277 浏览

python - 如何使用 Tensorflow ConvLSTMCell 构建编码器-解码器模型?

如果有人能向我解释如何使用 Tensorflow ConvLSTMCell()、tf.nn.dynamic_rnn() 和 tf.contrib.legacy_seq2seq.rnn_decoder() 构建编码器-解码器模型,我将非常感激。我想构建一个具有 3 个编码器层和 3 个解码器层的模型。我已经建立了模型,我使用 Moving mnist 数据集作为基准,在这个数据集中,每个序列有 20 帧,我将每个序列的前 10 帧提供给编码器,并愿意将接下来的 10 帧作为输出(预测),但对于预测部分,模型只是尝试输出最后一个输入帧(第 10 帧)。在我的模型中,我将编码器和解码器的第一层的过滤器数量设置为 128,将第二层和第三层的过滤器数量分别设置为 64 和 64。如果你想要我,我也可以在这里发布我写的代码。

0 投票
1 回答
2014 浏览

python - TensorFlow sequence_loss 和 label_smoothing

是否可以使用with的label_smoothing功能?tf.losses.softmax_cross_entropytf.contrib.seq2seq.sequence_loss

我可以看到它sequence_loss可以选择softmax_loss_function作为参数。但是,此函数将targetst 作为整数列表,而不是 所需的 one-hot 编码向量tf.losses.softmax_cross_entropy,这也是label_smoothingTensorFlow 中唯一支持的函数。

你能推荐一种使 label_smoothing 工作的方法sequence_loss吗?

0 投票
0 回答
542 浏览

tensorflow - 我想有一个使用 Tensorflow ConvLSTMCell 的例子

我想要一个使用 Tensorflow ConvLSTMCell 构建编码器-解码器网络的小例子。谢谢