问题标签 [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 投票
0 回答
98 浏览

python - 为什么 Paddle 在将 dense_vector_sequence 输入到 SeqToseq 模型时会抛出错误?

我正在尝试使用paddle-paddlehttps://github.com/baidu/Paddle)来训练(编码器-解码器)序列到序列模型以进行 POS 标记。

但是,我不会使用单词索引的一次性嵌入作为输入,而是使用我使用创建的虚构单词向量numpy。我已将单词向量添加到函数中的settings变量中:hook()dataprovider.py

在遍历句子及其 POS 标签时,我在https://github.com/alvations/rowrow/blob/master/dataprovider.py#L66上生成了这些虚构的向量而不是单词索引

在序列到序列模型中,由于输入(aka data_layer())不是 one-hot 嵌入,因此我不会使用嵌入层来包裹 one-hot 向量。但相反,我将使用全连接层将向量输入压缩到编码器大小,即https://github.com/alvations/rowrow/blob/master/seqToseq_net.py#L49

通常,嵌入层是这样的:

神经网络计算图似乎是正确的,因为它在运行train.sh.

但是在获取下一批时会引发错误:

我试过在 Paddle 的gitter.im上询问,但没有任何回应。

有人知道吗:

  • 错误是什么意思?
  • 如何将密集向量序列输入 Paddle 中的 seqToseq 模型?
  • 为什么 Paddle 在将 dense_vector_sequence 输入到 SeqToseq 模型时会抛出此错误?
0 投票
1 回答
7568 浏览

tensorflow - 在 TensorFlow 中可视化注意力激活

在此处输入图像描述

seq2seq有没有办法在 TensorFlow 的模型中可视化某些输入的注意力权重,如上面链接中的图(来自 Bahdanau 等人,2014 年) ?我已经找到了TensorFlow 的 github 问题,但在会话期间我无法找到如何获取注意力掩码。

0 投票
1 回答
599 浏览

python - 在解码期间使用 TensorFlow 的 seq2seq 示例代码提取注意力矩阵

似乎在解码期间未调用用于在序列到序列代码的示例 TensorFlow 代码中的 seq2seq_model.py 代码中计算注意力掩码的 attention() 方法。

有谁知道如何解决这个问题?这里提出了一个类似的问题:Visualizing attention activation in Tensorflow,但我不清楚如何在解码过程中获取矩阵。

谢谢!

0 投票
0 回答
128 浏览

python - 我需要 Tensorflow 中 RNNCell 的序列长度参数吗

如果我的输入是可变长度并且我填充它,例如:

然后我传递给 Tensorflow 的 RNN 单元:

在评估 PAD 符号之前停止计算,您将获得一系列输出状态(每个输入一个状态):

state4 和 state5 都为零:

如果我不传递 sequence_length 参数而是手动将 state4 和 state5 替换为零向量,我的模型的梯度计算是否正确?

0 投票
1 回答
4997 浏览

python - 如何在keras中编写序列以对RNN进行序列化?

我正在尝试编写一个序列以在 keras 中对 RNN 进行序列化。我使用我从网上理解的内容编写了这个程序。我首先将文本标记化,然后将文本转换为序列并填充以形成特征变量X。获得目标变量Y,首先将x向左移动,然后对其进行填充。最后,我将我的特征和目标变量提供给我的 LSTM 模型。

这是我为此目的在 keras 中编写的代码。

问题是它显示错误

0 投票
5 回答
16720 浏览

python - 如何将预测序列转换回keras中的文本?

我有一个序列到序列的学习模型,它工作得很好并且能够预测一些输出。问题是我不知道如何将输出转换回文本序列。

这是我的代码。

0 投票
3 回答
13879 浏览

python - 我们应该如何使用 pad_sequences 在 keras 中填充文本序列?

我使用从网络教程和我自己的直觉中获得的知识,自己在 keras中编写了一个序列到序列学习 LSTM。我将示例文本转换为序列,然后使用pad_sequencekeras 中的函数进行填充。

经过仔细检查,我发现我的填充序列看起来像这样

填充序列是否应该看起来像这样?除了数组中的最后一列之外,其余的都是零。我想我在将文本填充到序列时犯了一些错误,如果是这样,你能告诉我我在哪里犯了错误吗?

0 投票
0 回答
768 浏览

machine-learning - 可变序列批次的采样softmax损失?

背景信息:我正在研究序列到序列模型,现在我的模型接受可变长度输入张量(不是列表),其输入形状对应于 [批量大小,序列长度]。但是,在我的实现中,未指定序列长度(设置为无)以允许可变长度输入。具体来说,输入序列批次仅填充到该批次中最长序列的长度。这大大加快了我的训练时间,所以我更愿意保持这种方式,而不是回到分桶模型和/或将训练数据中的所有序列填充到相同的长度。我正在使用 TensorFlow 1.0.0。

问题:我目前正在使用以下方法来计算损失(运行得很好)。

其中词汇量通常约为 40,000。我想使用采样的 softmax,但由于输入形状的未指定性质,我遇到了一个问题。根据tf.nn.sampled_softmax_loss 的文档它需要为每个时间步单独提供输入。但是,我不能打电话,例如,

因为轴事先是未知的。有谁知道我该如何实现这个?有人会假设,由于 dynamic_rnn 和tf.losses.sparse_softmax_cross_entropy似乎都没有问题,因此可以以某种方式使用采样的 softmax 损失来实现一种解决方法。在深入研究了源代码甚至模型存储库之后,我空手而归。任何帮助/建议将不胜感激。

0 投票
2 回答
813 浏览

tensorflow - 为序列到序列(seq2seq)张量流模型创建集成?

我有一个训练了 30 个 epoch 的 tensorflow seq2seq模型,并为每个 epoch 保存了一个检查点。我现在想做的是结合这些检查点中最好的 X(基于开发集的结果)。具体来说,我正在寻找一种方法,可以让我平均不同的模型权重并将它们合并到一个可用于解码的新模型中。但是,这似乎没有固定的方法,加载不同的模型可能有点棘手。但即使这成功了,我也找不到关于如何在新模型中组合权重的好答案。

任何帮助将不胜感激。

相关问题(我认为没有充分回答):

在同一个图中构建多个模型

如何将多个相同模型从保存文件加载到 Tensorflow 的一个会话中

如何在张量流中创建集成?

0 投票
2 回答
2491 浏览

tensorflow - 在 tensorflow 中,如何使用 dynamic_decode 的输出计算序列损失

嗨,tensorflowers 同胞,我正在尝试使用正在开发和发布的 TF1.0 和 1.1 的新 seq2seq 模块来实现序列到序列模型。这里有一个 dynamic_decode 函数,它以 rnn_output 的形式返回 logits。然后,我需要使用 rnn 的输出来计算损失。当我天真地运行它时,只需使用 (rnn_output, weights, logits) 调用 tf.contrib.seq2seq.loss.sequence_loss ,它就会崩溃:

这是很自然的,因为 rnn_output 是动态塑造的。我有两种可能的解决方案: 1. 将动态张量“打包”成一个大小等于最大允许长度的张量。我不知道如何将动态张量打包成固定大小的张量,但它可能必须使用用于动态形状的新接口:tf.while_loop 和 TensorArrays。很高兴听到一些关于这方面的建议 2. 动态计算 sequence_loss。但是我对内部张量流实现的了解太有限,无法正确评估它是否容易做到。这里有什么建议吗?

一般问题

从dynamic_decode的动态形状的rnn_output计算采样/正常softmax交叉熵损失的正确方法是什么?

我有以下代码:

ipdb> tf. 版本“1.1.0-rc0”

蟒蛇:2.7