问题标签 [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.
lstm - When to use RNN or LSTM
What is the difference between RNNs and LSTMs and when do we use either of these models?
python - 如何加载 Seq2Seq 模型并使用它?
我已经使用 Seq2Seq 模型构建了一个基本的聊天机器人。当我在笔记本中按顺序运行代码时,机器人运行良好 - 即构建模型 - > 训练模型 - > 测试模型。
我现在想在训练后保存模型,加载模型然后测试模型。
但是,我遇到了问题/努力进一步进行。
这是我到目前为止所得到的:
保存模型
这似乎工作正常加载模型
这似乎工作正常当我按顺序运行时,下面的代码会完成输入问题、标记化并响应问题的工作。
加载 Seq2Seq 模型后,我不确定 model_c、input_c 等变量如何获取值/初始化。
对于这个问题的基本性质,或者我试图实现的目标没有意义,我深表歉意;我刚刚开始研究张量。
tensorflow - 获取 ValueError:将 gensim.word2vec 传递给 feed_dict 时设置具有序列的数组元素
我正在使用 tensorflow(不是 Keras)创建一个 seq2seq 模型,并且输入/输出是句子。诸如聊天机器人或翻译器之类的东西。
但是当我跑步时
我明白了
input_batch
/是句子output_batch
的数组。gensim.word2vec.wv.vectors
我也尝试了其他东西作为输入,但我仍然得到同样的错误。对于目标,它是一个数组数组(每个内部数组都是映射到句子单词的数字列表)。
收到错误的 target_batch 如下所示:
[[297, 242, 430, 451, 507, 507, 505, 506, 506, 506, 506, 506], [297, 242, 430, 451, 507, 507, 505, 506, 506, 506, 506, 506], ...]
和input_batch
/output_batch
我已经尝试了一切。
我使用gensim
word2vec
和 forinputbatch.append(input_data)
input_data
为每个句子使用gensim
word2vec
如下:
我已经完成了所有工作,从将其保存到 bin 并检索到使用model.wv.vectors
. 我得到了所有 3 个错误enc_input
,dec_input
并且 targets
enc_input = tf.placeholder(tf.float32, [None, None, n_input])
谢谢。
pytorch - pytorch attention seq2seq教程中的错误?
我正在 Pytorch 中编写一个序列来序列神经网络。在官方 Pytorch seq2seq 教程中,有一个我无法理解/认为可能包含错误的注意力解码器代码。
它通过连接此时的输出和隐藏状态来计算每个时间步的注意力权重,然后乘以一个矩阵,得到一个大小等于输出序列长度的向量。请注意,这些注意力权重不依赖于编码器序列(在代码中命名为 encoder_outputs),我认为它应该如此。
此外,本教程中引用的论文列出了三种不同的得分函数,可用于计算注意力权重(论文第 3.1 节)。这些函数都不是仅仅连接矩阵并乘以矩阵。
所以在我看来,教程中的代码在它应用的函数和传递给这个函数的参数中都是错误的。我错过了什么吗?
deep-learning - 基于变压器的解码
变压器模型中的解码器可以像编码器一样并行化吗?据我了解,编码器具有序列中的所有标记来计算自注意力分数。但是对于解码器来说,这是不可能的(在训练和测试中),因为自我注意力是根据之前的时间步输出计算的。即使我们考虑使用诸如teacher forcing之类的技术,我们将预期输出与得到的输出连接起来,这仍然具有来自前一个时间步的顺序输入。在这种情况下,除了在捕获长期依赖关系方面的改进之外,在纯粹基于并行化进行比较时,使用转换器解码器是否比使用 lstm 更好?
keras - 带有 POS 的 Word2Vec 没有产生预期的结果?
我正在尝试使用 Word2Vec 嵌入来衡量词性信息的影响,但没有获得预期的结果。
我希望 POS 包含 word2vec 嵌入在机器翻译任务中表现更好,但实际上表现更差。
我正在使用 Gensim 从同一个语料库中创建两组嵌入,一组是普通的 Word2Vec,另一组是我将标记更改为“[WORD]__[POS]”。
我通过在 Seq2Seq 机器翻译任务中使用嵌入来衡量性能差异。我正在使用 BLEU 评估这两种方法
这就是我使用 SpaCy 训练 word2vec + POS 嵌入的方式:
这是我使用 Keras + Tensorflow 的基准机器翻译模型:
使用 BLEU,Word2Vec+POS 方法的得分始终与 Word2Vec 相同,或者比正常的 Word2Vec 嵌入低 0.01-0.02 分。
有谁知道为什么会发生这种情况?我的推理或期望是否存在差距?
tensorflow - 在 LSTM 上添加 return_state=True 时,这两个结构没有相同的嵌套结构
我不知道这是一种错误还是错误。我也在这里报告了这个问题。
我想做的事情是我想让我的自定义 LSTM 有状态。所以这段代码运行without
良好return_state=True
。一旦我将它添加到代码中,它就会引发这个错误:The two structures don't have the same nested structure
。
这是一个可重现的代码:
更新1
在应用了评论的想法后tf.map_fn(row_entropy, encoded,dtype=tf.float32)
,我收到了一个新的错误:
另外,考虑到即使没有那个 lambda 层也会引发这个错误,所以似乎还有其他问题。如果我尝试encoded.shape
,它会说encoded
是一个列表,length 5
但是它必须是一个张量(batch_size, latent size)
!!!
一切都很好,没有添加return_state=True
任何帮助表示赞赏!
lstm - 从前一行预测新行
我有一个数据集,其中数据集是这样的,我们有 4 列,每行具有不同的值,其中某些列的值可能在下一行增加或减少。我想了解这是哪种模型或 ML 类型的问题,我想通过查看前几行的数据来预测具有 4 列的新行。
deep-learning - 在 OpenNMT-py 中输出隐藏状态
我只是有一个关于 OpenNMT 的 pytorch 版本的简短问题。选项中似乎没有返回编码器和解码器隐藏状态的选项。我错过了一个标志还是这不是 OpenNMT-py 中的一个选项?
nlp - 如何测试使用教师强制训练的模型
我使用 keras 训练了一个 seq2seq 模型(keras.models.Model)。模型的 X 和 y 是 [X_encoder, X_decoder] 和 y 即编码器和解码器输入和标签的列表(请注意,解码器输入 X_decoder 是“y”,比实际 y 提前一个位置。基本上,教师强迫)。
所以我现在的问题是在训练之后,当涉及到我没有任何标签的实际预测时,如何为我的输入提供“X_decoder”?还是我训练别的东西?
这是模型定义的一个片段,如果有帮助的话:)