问题标签 [seq2seq]
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.
keras - Keras seq2seq 填充
我正在开发 seq2seq 聊天机器人。我会问你,如何在 val_acc 计数时忽略聊天机器人响应中的 PAD 符号。
例如,我的模型生成响应:[I, am, reading, a, book, PAD, PAD, PAD, PAD, PAD]
但是,正确的反应应该是:[My, brother, is, playing, fotball,PAD, PAD, PAD, PAD, PAD].
在这种情况下,聊天机器人的反应完全错误,但由于填充符号,val_acc 为 50%。
我使用 Keras,编码器-解码器模型(https://blog.keras.io/a-ten-minute-introduction-to-sequence-to-sequence-learning-in-keras.html)和教师强制
我的代码在这里:
编码器输入是句子,其中每个单词都是整数,0 是填充:[1,2,5,4,3,0,0,0] -> 用户问题解码器输入也是句子,其中每个单词都是整数,0 是填充和100 是符号 GO:[100,8,4,2,0,0,0,0,0]] -> 聊天机器人响应移位了一个时间戳解码器输出是句子,其中单词是整数,这些整数是一个热编码的: [8,4,2,0,0,0,0,0, 0]] -> 聊天机器人响应(整数是一种热编码。)
问题是,val_acc 太高了,模型预测的句子也完全错误。我认为这是由于填充引起的。我的模型有问题吗?我应该在我的解码器中添加一些其他掩码吗?
python - NMT,张量流,NotFoundError 错误
我正在使用 tensorflow 来实现 nmt
https://www.tensorflow.org/versions/master/tutorials/seq2seq#sequence-to-sequence-models
我将为韩语和英语创建 NMT。我创建的数据类似于 Tensorflow 提供的数据。分别对应于训练、开发和测试数据。
但是,以下错误继续出现。我不知道怎么了。
命令如下。
我的问题是,我不确定 None.ko 是否存在并且 NotFoundError 是否显示。
python - tensorflow 1.8 版中 tf.contrib.seq2seq.prepare_attention() 的替代方案
AttributeError:模块“tensorflow.contrib.seq2seq”没有属性“prepare_attention”
我知道 prepare_attention() 已被弃用。有什么替代方案?并且还请指定语法。
我正在使用的函数是:defdecode_layer_train(encoder_state,dec_cell,dec_embed_input,sequence_length,decode_scope,output_fn,keep_prob,batch_size):'''解码训练数据'''
nlp - 如何获取 word2vec.bin 文件
我想使用 python 和深度学习方法构建一个聊天机器人。我指的是下面的链接 聊天机器人代码 但是我在 word2vec.bin 文件中遇到了问题,正如代码中描述的那样。我应该在哪里获得 bin 文件?
tensorflow - 了解 tf.contrib.seq2seq.dynamic_docode 的 final_outputs
当我在这里阅读 seq2seq 教程时,我无法理解函数的输出tf.contrib.seq2seq.dynamic_docode
。
本教程使用sample_id = outputs.sample_id
和logits = self.output_layer(outputs.rnn_output)
在推理中访问解码器在训练中使用的输出,logits = outputs.rnn_output
以及sample_id = outputs.sample_id
。logits
和在这里代表什么sample_id
?final_outputs
of 函数的内容是什么tf.contrib.seq2seq.dynamic_docode
?
tensorflow - `tf.contrib.seq2seq.BeamSearchDecoder` 的输出中的 predict_ids 的形状
中内容的形状是outputs
什么tf.contrib.seq2seq.BeamSearchDecoder
。我知道它是 的一个实例,但是和class BeamSearchDecoderOutput(scores, predicted_ids, parent_ids)
的形状是什么?scores
predicted_ids
parent_ids
python - 在 google colaboratory 上安装 seq2seq
我已经seq2seq
在 google colab 上安装了,但是当我想导入它时,我得到了错误:
当我运行时:
如何在这种环境下正确导入 seq2seq?
pytorch - 在 PyTorch 中实现 Luong Attention
我正在尝试实现Luong 等人中描述的注意力。2015年我自己在 PyTorch 中,但我无法让它工作。下面是我的代码,我现在只对“一般”注意案例感兴趣。我想知道我是否遗漏了任何明显的错误。它运行,但似乎没有学习。
我研究了在
https://pytorch.org/tutorials/intermediate/seq2seq_translation_tutorial.html
和
https://github.com/spro/practical-pytorch/blob/master/seq2seq-translation/seq2seq-translation.ipynb
- 第一个不是我正在寻找的确切注意力机制。一个主要的缺点是它的注意力取决于序列长度(
self.attn = nn.Linear(self.hidden_size * 2, self.max_length)
),这对于长序列来说可能是昂贵的。 - 第二个与论文中描述的更相似,但与没有
tanh
. 此外,将其更新到最新版本的 pytorch ( ref )后确实很慢。另外我不知道为什么它需要最后一个上下文(ref)。
python - Tensorflow seq2seq 聊天机器人总是给出相同的输出
我正在尝试使用 Tensorflow 制作一个 seq2seq 聊天机器人,但尽管输入不同,但它似乎收敛到相同的输出。该模型在第一次初始化时给出不同的输出,但在几个 epoch 后很快收敛到相同的输出。即使经过了很多时代和低成本,这仍然是一个问题。然而,这些模型在使用较小的数据集(比如 20 个)进行训练时似乎表现良好,但在使用较大的数据集时却失败了。
我正在使用 100 维和 50000 个词汇的手套预训练嵌入来训练康奈尔电影对话语料库。
当给定完全不同的输入时,编码器似乎具有非常接近的最终状态(在 0.01 左右的范围内)。我尝试过使用简单的 LSTM/GRU、双向 LSTM/GRU、多层/堆叠 LSTM/GRU 和多层双向 LSTM/GRU。rnn 节点已经用 16 到 2048 个隐藏单元进行了测试。唯一的区别是,当隐藏单元较少时,模型倾向于只输出开始和结束标记(GO 和 EOS)。
对于多层 GRU,这是我的代码:
完整代码请参见github。(如果你想测试它,运行 train.py)
至于超参数,我尝试了从 0.1 一直到 0.0001 的学习率和从 1 到 32 的批量大小。除了常规和预期效果之外,它们对解决问题没有帮助。
machine-learning - 编码器为每个输入 Keras seq2seq 返回相同的状态
我在 Keras 中使用编码器解码器 seq2seq 架构,我正在传递一个单热的形状数组(num_samples、max_sentence_length、max_words)进行训练,并使用教师强制。
对于推理模型:
我尝试打印出 encoder_model 状态,但它总是为任何输入返回相同的状态。任何帮助,将不胜感激!