小编ian*_*ler的帖子

当 Seq2Seq 网络在输出中一遍又一遍地重复单词时该怎么办?

所以,我一直在努力了一段时间的一个项目,我们有非常少的数据,我知道它会变得更好,如果我们能够把一个非常非常大的数据集。除此之外,我目前的问题是当我有一个句子输入时,我的输出现在看起来像这样:

联系方式 联系方式 联系方式 联系方式

一个词被聚焦并一遍又一遍地重复。我能做些什么来克服这个障碍?

我尝试过的事情:

  1. 仔细检查我正在附加开始/停止标记并确保标记正确放置在其词汇文件的顶部,我正在共享词汇。
  2. 我发现有人说这可能是由于词嵌入不好。为此,我使用 tensorboard 进行了检查,果然 PCA 显示了一个非常密集的点集群。看到我抓取了 Facebook 的公共预训练词向量并将它们作为嵌入加载。再次训练,这次张量板 PCA 显示了更好的画面。
  3. 将我的训练调度程序从基本切换到 SampledScheduling,偶尔用基本事实替换训练输出。
  4. 将我的解码器切换为使用波束搜索解码器,我认为如果单词选择在中间特征空间中靠得很近,这可能会提供更可靠的响应。

可以肯定的是,我的困惑正在稳步减少。

这是我的数据集准备代码:

class ModelInputs(object):
"""Factory to construct various input hooks and functions depending on mode """

def __init__(
    self, vocab_files, batch_size,
    share_vocab=True, src_eos_id=1, tgt_eos_id=2
):
    self.batch_size = batch_size
    self.vocab_files = vocab_files
    self.share_vocab = share_vocab
    self.src_eos_id = src_eos_id
    self.tgt_eos_id = tgt_eos_id

def get_inputs(self, file_path, num_infer=None, mode=tf.estimator.ModeKeys.TRAIN):
    self.mode = mode
    if self.mode == tf.estimator.ModeKeys.TRAIN:
        return self._training_input_hook(file_path)
    if self.mode == tf.estimator.ModeKeys.EVAL: …
Run Code Online (Sandbox Code Playgroud)

translation nlp machine-learning tensorflow

8
推荐指数
2
解决办法
3384
查看次数

形状必须是等级0但是等级1,parse_single_sequence_example

在过去的几天里,我遇到了将数据序列化为tfrecord格式然后使用parse_single_sequence示例进行反序列化的问题.我试图检索数据以使用相当标准的RNN模型,但这是我第一次尝试使用tfrecords格式以及随之而来的相关管道.

这是一个重现我遇到的问题的玩具示例:

import tensorflow as tf
import tempfile
from IPython import embed

sequences = [[1, 2, 3], [4, 5, 1], [1, 2]]
label_sequences = [[0, 1, 0], [1, 0, 0], [1, 1]]

def make_example(sequence, labels):

    ex = tf.train.SequenceExample()

    sequence_length = len(sequence)
    ex.context.feature["length"].int64_list.value.append(sequence_length)

    fl_tokens = ex.feature_lists.feature_list["tokens"]
    fl_labels = ex.feature_lists.feature_list["labels"]
    for token, label in zip(sequence, labels):
        fl_tokens.feature.add().int64_list.value.append(token)
        fl_labels.feature.add().int64_list.value.append(label)
    return ex


writer = tf.python_io.TFRecordWriter('./test.tfrecords')
for sequence, label_sequence in zip(sequences, label_sequences):
    ex = make_example(sequence, label_sequence)
    writer.write(ex.SerializeToString())
writer.close()

tf.reset_default_graph()

file_name_queue = tf.train.string_input_producer(['./test.tfrecords'], num_epochs=None)

reader = …
Run Code Online (Sandbox Code Playgroud)

tensorflow

6
推荐指数
1
解决办法
5928
查看次数

标签 统计

tensorflow ×2

machine-learning ×1

nlp ×1

translation ×1