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

0 投票
0 回答
435 浏览

keras - 如何在 keras 中实现对序列到序列模型的注意。请逐步解释

如何在 keras 中实现序列到序列模型的注意力。我了解这个seq2seq模型,但我想注意图 B(显示在附加的链接seq2seq 中)。请逐步解释。

0 投票
0 回答
149 浏览

tensorflow - Tensorflow - Seq2Seq 模型权重未正确加载

我正在开发一个encoder-decoder聊天机器人,它由解码器顶部的一个embedding layer、两层LSTM和一个组成。fully connected layer

加载后checkpoint fileloss它比我上次保存模型时要高得多,而且聊天机器人的结果正如预期的那样更糟。然而,模型并没有回到他的初始状态。这意味着如果我在模型损失 2.4 时保存模型,它将加载 4-5 损失而不是 10(这是模型开始学习之前的损失)。

此外,模型在加载权重后学习得更快,这让我相信有些权重已经成功加载,而有些则没有。

我正在使用此代码构建模型并checkpoint__init__函数中加载:

这就是我在__build_model函数中构建模型的方式:

我在训练时使用这个函数来保存权重:

0 投票
0 回答
483 浏览

python - Keras seq2seq 示例保存问题

.

大家好!

我刚刚尝试了 keras seq2seq 示例(链接)。

它工作得很好,但是当我尝试保存经过训练的模型时会出现问题。

我从来没有修复过代码。有没有人已经知道这个问题?

请帮我!

错误:

0 投票
1 回答
1483 浏览

python - InvalidArgumentError:收到的标签值 8825 超出 [0, 8825) SEQ2SEQ 模型的有效范围

我一直在尝试使用 Udemy 课程中名为 DeepLearning_NLP_Chatbot 的 Seq2Seq 模型构建 RNN,我一步一步跟着他,但在训练时遇到错误: InvalidArgumentError : Received a label value of 8825 which is outside the valid range of [0, 8825)。这里的数据集。

这是数据处理数据集

这是构建 seq2seq 模型:

这是培训:

如果您对此错误有意见,不胜感激。:)

0 投票
0 回答
32 浏览

tensorflow - attention_layer_size 有什么用?

我正在按照代码学习 seq2seq API。我无法弄清楚该attention_layer_size参数的用途以及为什么将其设置为num_units/2

0 投票
1 回答
1570 浏览

keras - 在 PyTorch 中准备序列到序列网络的解码器

我在 Pytorch 中使用序列到序列模型。序列到序列模型由编码器和解码器组成。

编码器转换一个(batch_size X input_features X num_of_one_hot_encoded_classes) -> (batch_size X input_features X hidden_size)

解码器将获取这个输入序列并将其转换为(batch_size X output_features X num_of_one_hot_encoded_classes)

一个例子就像 -

在此处输入图像描述

所以在上面的例子中,我需要将 22 个输入特征转换为 10 个输出特征。在 Keras 中,可以使用 RepeatVector(10) 来完成。

一个例子 -

虽然,我不确定这是否是将输入序列转换为输出序列的正确方法。

所以,我的问题是——

  • 将输入序列转换为输出序列的标准方法是什么。例如。从 (batch_size, 22, 98) -> (batch_size, 10, 98) 转换?或者我应该如何准备解码器?

编码器代码片段(用 Pytorch 编写) -

0 投票
2 回答
1601 浏览

keras - Keras seq2seq 堆叠层

在教程中:https : //blog.keras.io/a-ten-minute-introduction-to-sequence-to-sequence-learning-in-keras.html 我们有一层 seq2seq 模型。我想扩展这个模型,在编码器侧增加一层,在解码器侧增加一层。训练似乎正在发挥作用,但是我无法在多层正确的推理设置中获得解码器。这是我对教程中提到的模型的更改。

编码器:

解码器:

推理(这是我不知道如何创建具有多层的解码器的部分)当前不起作用的实现如下:

谢谢

0 投票
2 回答
2194 浏览

python - Seq2Seq 模型学会在几次迭代后只输出 EOS 令牌 (<\s>)

我正在使用NMT创建一个在康奈尔电影对话语料库上训练的聊天机器人。

我的代码部分来自https://github.com/bshao001/ChatLearnerhttps://github.com/chiphuyen/stanford-tensorflow-tutorials/tree/master/assignments/chatbot

在训练过程中,我打印了一个从批次中馈送到解码器的随机输出答案,以及我的模型预测的相应答案,以观察学习进度。

我的问题:仅经过大约 4 次训练迭代后,模型就学会了<\s>为每个时间步输出 EOS 令牌 ( )。即使在训练继续进行时,它也始终将其输出为响应(使用 logits 的 argmax 确定)。偶尔,很少,模型会输出一系列周期作为其答案。

我还在训练期间打印了前 10 个 logit 值(不仅仅是 argmax),以查看其中是否存在正确的单词,但它似乎是在预测词汇中最常见的单词(例如 i、you、?、. )。即使是这些前 10 个单词在训练期间也没有太大变化。

我已确保正确计算编码器和解码器的输入序列长度,并<s>相应地添加了 SOS ( ) 和 EOS(也用于填充)标记。我还在损失计算中执行掩蔽

这是一个示例输出:

训练迭代1:

...

训练迭代 4:


经过几次迭代后,它决定只预测 EOS(很少有一些时期)

我不确定是什么导致了这个问题,并且已经坚持了一段时间。任何帮助将不胜感激!

更新:我让它训练了十万次迭代,它仍然只输出 EOS(和偶尔的周期)。几次迭代后,训练损失也没有减少(从一开始就保持在 47 左右)

0 投票
0 回答
313 浏览

python - 如何在 rnn、tensorflow 中制作解码器,提供先前的输出

我想知道如何在 tensorflow rnn 中制作解码器,将它的第 i 个输出馈送到第 (i+1) 个输入

我的输入有 20 个序列和 3680 个 dementions,我的输出有 39 个序列和 3680 个 dementions 所有数据都是 0~1 数字

这是我的模型

我如何制作将先前输出馈送到下一个输入的解码器模型?

附言

我像这样制作我的自我回答代码

我认为这段代码的输出与上面代码的输出不同,但我不确定它是否正常工作。

所以我仍然想知道如何使用tensorflow方法制作具有循环函数((i)输出->(i + 1)输入)的解码器,因为它比上层代码需要更多的内存分配。(在我看来它具有相同的细胞计数)

0 投票
0 回答
228 浏览

keras - 嵌入版本 seq2seq 模型(Keras)

我想通过修改 keras github 上的示例来建立一个嵌入版本的 seq2seq 模型。 https://github.com/keras-team/keras/blob/master/examples/lstm_seq2seq.py

我已经尝试过 np.reshape 但它不起作用。

但是,我收到以下错误消息,有人可以帮助我吗?非常感谢!

ValueError:检查输入时出错:预期 Encoder_input 具有 2 维,但得到的数组具有形状(4999、53、3132)