问题标签 [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 回答
176 浏览

python - Tensorflow 序列到序列 CustomHelper

关于 Sequence to Sequence CustomHelper 的文档数量有限

helper = tf.contrib.seq2seq.CustomHelper(initialize_fn = initialize_fn,sample_fn = sample_fn, next_inputs_fn = next_inputs_fn)

在张量流中。

有人会根据输入数据解释自定义助手的输入吗

X = tf.placeholder(tf.float32, [batch_size x time_steps x features])

和编码器,

encoder_cell = tf.contrib.rnn.BasicLSTMCell(hidden_size)

initial_state = encoder_cell.zero_state(batch_size, dtype=tf.float32)

和/或可能

rnn_output, rnn_states = tf.nn.dynamic_rnn(encoder_cell, X, dtype=tf.float32) ?

0 投票
1 回答
149 浏览

python - RNN 推理所需的解码器目标

我一直在尝试使用 deepfix 工具 ( https://bitbucket.org/iiscseal/deepfix ) 进行一些实验,该工具是seq2seq用于纠正常见编程错误的模型。我对代码进行了更改,使其与 兼容TF-1.12,因为原始代码包含tensorflow.contrib.seq2seq版本中不支持的功能TF-1.12(仅在 中TF-1.0.x)。

主要变化seq2seq_modelneural_net/train.py. 下面是修改后的代码。我是新手tensorflow RNN,并使用在线代码的帮助对解码器部分进行了编码。

我对这段代码有一些问题:

  1. 主要问题 - seq2seq.train_step()andseq2seq.validate_step()函数正在工作,但是当我seq2seq.sample()用于实际进行推断时,我收到一个错误,要求我为decoder_targets. 这是一个意外行为,因为该SampleEmbeddingHelper函数用于不需要解码器目标的推理。错误:

InvalidArgumentError(有关回溯,请参见上文):您必须为占位符张量“ids/decoder_targets”提供一个值,其 dtype 为 int32 和形状 [?,?] [[node ids/decoder_targets(定义在 .../code/neural_net/train. py:241) = Placeholderdtype=DT_INT32, shape=[?,?], _device="/job:localhost/replica:0/task:0/device:CPU:0"]]

  1. 当我尝试使用GreedyEmbeddingHelper而不是SampleEmbeddingHelper,然后运行decoder_logits_inference​​op 时,机器会在一段时间后挂起并耗尽内存。虽然SampleEmbeddingHelper工作正常。
0 投票
0 回答
92 浏览

tensorflow - 使用 tensorflow seq2seq 模型进行训练

我目前正在使用 lstm。我有一个包含许多关于交易信息的句子的数据集,我想提取信息,假设金额、日期和 transactionWith。我已经尝试过使用基本的 lstm,我的系统尝试将给定序列的每个单词预测为金额、日期、transactionWith 或不相关。

我的训练数据是这样的:

输入:

你在 2018 年 8 月 13 日给了约翰 100.00

目标:(标记每个单词)

ir ir 金额 ir transactionWith ir 日期

您可以看到整个数据集有很多“ir”或不相关的标签,我认为这会使我的系统偏向于预测测试数据的“ir”。

现在我想尝试使用张量流的 seq2seq 模型,其中输入是事务句,目标是提取信息的 seq。一个例子是这样的 -

输入:

你在 2018 年 8 月 13 日给了约翰 100.00。

目标:

100.00 13-08-2018 约翰

在这里,我所有的目标序列都将保持固定格式,例如第一个是金额,第二个是日期,第三个是 transactionWith 等。

我可以像语言翻译模型那样做吗?

提前感谢所有很棒的人。:)

0 投票
0 回答
142 浏览

python - 运行时使用 dynamic_rnn 的 Tensorflow GPU 内存不足

我在 Nvidia P100 GPU 上使用 Tensorflow 训练 seq2seq 模型时遇到问题。以下是我正在使用的版本:TensorFlow 1.10.0、Keras 2.2.2、Python 3.6.3、CUDA 9.2.148.1、cuDNN 7.2.1

我目前在训练过程中(18 分钟)遇到了 OOM 错误。我一直在做一些挖掘并尝试设置allow_growth = True(下面的代码中没有设置标志)但没有看到任何内存增长,所有这些都是在开始时分配的。
我还尝试将图表设置为只读,tf.finalize()但程序仍在运行,这表明没有添加节点,或者如果没有将函数放置在代码中的正确位置。

由于图形可以训练并且可以保存,所以一开始它似乎并没有太大。

以下是我正在使用的一些超参数:
batch_size = 10
rnn_size = 1024
src/tgt_vocab_size = 8000 epochs
= 20
display_steps = 10

使用的数据集是文档字符串和相关的函数代码,所以不会太长。我最初的想法之一是,由于句子的大小是动态的,因此很长的句子可能太大了。但是我对数据集进行了洗牌,以查看崩溃是否发生在不同的时间,并且仍然是 18 分钟,参数相同。

这是包含图表和训练/测试循环的代码。

这是训练运行的输出: 命令行输出

我执行图表的方式有问题,还是我重复了一些导致内存填满的步骤?

感谢你的帮助!

0 投票
1 回答
1169 浏览

python - 如果不用于推理,那么训练 seq2seq 模型有什么意义?

在官方Keras seq2seq 示例(我将在底部包含它)中,他们使用该fit函数训练模型,但他们甚至没有在解码过程中的任何地方使用该模型来测试新数据上的模型。

我正在尝试像这样训练一个 seq2seq 模型,并且我已经在 Google Colab 上成功训练它并下载了.h5文件,并使用该函数加载了模型load_model,但它似乎不起作用。

如果脚本在训练后没有在model任何地方使用变量,为什么需要训练模型?由此延伸,在新数据上使用脚本的过程是什么?我目前只是使用相同的脚本,但省略了compileandfit函数并将它们替换为load_model.

0 投票
0 回答
257 浏览

tensorflow - tensorflow Seq2seq模型:推理结果与预期完全不同

我尝试使用 seq2seq 模型来处理视频字幕问题。您可能知道没有使用新(1.40+ 版本)tensorflow 来执行此操作的更新版本。我只是重写整个事情。为了实现注意力,我只是尝试了“Luong”和“Bahdanau”。我试图通过打印正在发生的事情来可视化培训过程。这是 10 个 epoch 后的结果。

(这是一个中文应用程序。结果相当不错)。

奇怪的点:

  1. 我的预测中根本没有“eos”标签。
  2. 它可以产生与我的 max_target_sequence_length 集一样多的内容。
  3. 尝试了不同类型的解码。完全没有区别。

这是示例代码。

0 投票
0 回答
692 浏览

pytorch - 为什么pytorch中的简单seq2seq总是返回NaN?

我有以下精简模型:

总而言之,我认为我基本上只是将输入输入到具有随机初始化隐藏值的 LSTM 中,然后获取该 LSTM 输出的 sigmoid。然后我将该输出馈送到解码器 LSTM,并取解码器输出的 sigmoid 并将其用作我的最终值。

不幸的是,即使在第一次迭代中,模型也经常输出正确形状的向量(batch_size、seq_length、seq_dim),但至少包含一个,有时是所有 NaN 值。我究竟做错了什么?

谢谢!

到目前为止我已经尝试过:

  • 将 LSTM 更改为 GRU
  • 将 sigmoid 更改为 relu
  • 改变隐藏表示的维度
  • 将失败的输入传递给编码器

编辑:向所有在我破坏代码时试图提供帮助的人道歉——我真的很珍惜你的时间,非常感谢你的帮助!

0 投票
1 回答
138 浏览

python - 有没有办法控制序列的输出长度到序列文本摘要模型?

有没有办法控制用于文本摘要的 seq2seq 模型产生的单词或字符的数量?例子:

“我的狗是世界上跑得最快的狗。它也喜欢拥抱。”

1 输出:我的狗很快,喜欢拥抱。

2 输出:我的狗是跑得最快的狗,也喜欢拥抱。

0 投票
0 回答
21 浏览

deep-learning - 将文本分解为多类

我正在寻找一种用作字符串解码器(多标签分类器)的机器学习算法。例如,将一封电子邮件分解xyz@qwe.abc.com为具有/不具有概率的不同类别

或 231115

我的情况更复杂,但以上内容将指导我去哪里寻找。例如我可能有 74als353d 74:family als:ftype 353d:id 和

我遇到深度学习算法 SEQ2SEQ会是一个很好的起点吗?

0 投票
0 回答
212 浏览

python - 我是否在推理模型中正确应用了 seq2seq 中的嵌入层?

我是 NLP 和 Keras 的新手,仍在学习。

我尝试遵循本指南:https ://blog.keras.io/a-ten-minute-introduction-to-sequence-to-sequence-learning-in-keras.html并添加了嵌入层。我正在使用 fra2eng 数据集。

但是,我不确定我的推理模型和输出代码的生成是否正确。基本上,我的解码器输入是输入到我的推理模型中的索引(单个数字)数组。

我不太确定这是否正确。如果需要更多背景信息或代码,请告诉我。

input_seq 是词汇表中单词的索引数组。

0 是我的起始标记索引,所以我的第一个目标序列是 np.array([0]) --> 不确定它是否正确

这是我的输出,想知道输出是否是由于上述任何错误。