问题标签 [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.
tensorflow - 聊天机器人的 Seq2Seq 模型
我正在构建一个聊天机器人,它具有序列到序列编码器解码器模型,如NMT中。从给定的数据中,我可以理解,在训练时,它们将解码器输出与编码器单元状态一起馈送到解码器输入中。我无法弄清楚当我实际实时部署聊天机器人时,我应该如何输入解码器,因为那时我必须预测输出。有人可以帮我解决这个问题吗?
tensorflow - tensorflow embedding_lookup 是否可微分?
我遇到的一些教程使用随机初始化的嵌入矩阵进行描述,然后使用该tf.nn.embedding_lookup
函数获取整数序列的嵌入。我的印象是,由于embedding_matrix
是通过 获得tf.get_variable
的,优化器会添加适当的操作来更新它。
我不明白的是如何通过查找功能发生反向传播,这似乎是硬而不是软。这个操作的梯度是多少?它的输入ID之一?
machine-learning - Attention Mechanism 中的“源隐藏状态”指的是什么?
注意力权重计算为:
我想知道h_s
指的是什么。
在 tensorflow 代码中,编码器 RNN 返回一个元组:
正如我所想,h_s
应该是encoder_state
,但是github/nmt给出了不同的答案?
我误解了代码吗?或者h_s
实际上意味着encoder_outputs
?
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)
我已将解码器的输出投影仪修改为全连接层,而不仅仅是教程代码中的线性投影仪。通过定义以下自定义层类:
自定义层.pyhttps://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]?
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) 关注论文的真正意图吗?
python - 如何在 Tensorflow 中使用动态 rnn 构建解码器?
我知道如何在 Tensorflow 中使用动态 rnn 构建编码器,但我的问题是我们如何将它用于解码器?因为在每个时间步的解码器中,我们应该提供前一个时间步的预测。提前致谢!
tensorflow - Tensorflow seq2seq:张量'对象不可迭代
我在下面的代码中使用 seq2seq,我发现以下错误:
但我得到了错误:
我查了一下,它来自 seq2seq 行。
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。如果你想要我,我也可以在这里发布我写的代码。
python - TensorFlow sequence_loss 和 label_smoothing
是否可以使用with的label_smoothing
功能?tf.losses.softmax_cross_entropy
tf.contrib.seq2seq.sequence_loss
我可以看到它sequence_loss
可以选择softmax_loss_function
作为参数。但是,此函数将targets
t 作为整数列表,而不是 所需的 one-hot 编码向量tf.losses.softmax_cross_entropy
,这也是label_smoothing
TensorFlow 中唯一支持的函数。
你能推荐一种使 label_smoothing 工作的方法sequence_loss
吗?
tensorflow - 我想有一个使用 Tensorflow ConvLSTMCell 的例子
我想要一个使用 Tensorflow ConvLSTMCell 构建编码器-解码器网络的小例子。谢谢