【问题标题】:TensorFlow seq2seq model with low number of target_vocab_size具有少量 target_vocab_size 的 TensorFlow seq2seq 模型
【发布时间】:2016-06-15 10:11:27
【问题描述】:

我正在试验 tensorflow seq2seq_model.py 模型。 我的目标词汇量约为 200。

documentation 说:

对于小于 512 的词汇,最好只使用标准的 softmax 损失。

源代码也有检查:

if num_samples > 0 and num_samples < self.target_vocab_size:

仅使用 200 个目标输出词汇运行模型不会调用 if 语句。

我是否需要编写一个“标准”so​​ftmax 损失函数来确保良好的训练,或者我可以让模型运行吗?

感谢您的帮助!

【问题讨论】:

    标签: machine-learning tensorflow


    【解决方案1】:

    我也在做同样的事情。为了让我的手指在训练数据中使用不同类型的结构,我正在一个人工测试世界中工作,(源和)目标词汇表中只有 117 个单词。

    我问了自己同样的问题,并决定不经历这个麻烦。即使我没有接触损失,我的模型也训练得很好,因此仍然使用 sampled_softmax_loss。

    对这些小词汇量的进一步体验: - 在我的情况下,batchsize 32 是最好的(较小的让它非常不稳定,我很快就会遇到 nan 问题) - 我使用 AdaGrad 作为优化器,它就像魔术一样工作 - 我正在使用 model_with_buckets(通过 translate.py 解决),并且在许多情况下,具有 num_layers 2 的大小为 512 会产生预期的结果。

    【讨论】:

    • 非常感谢您与模型分享您的经验!在 seq2seq_model.py 中,您是否刚刚将 tf.train.GradientDescentOptimizer 替换为 tf.train.AdagradOptimizer?或者我是否需要在以下 for 循环中调整其他任何内容 - for b in xrange(len(buckets)): ?
    • 把它换到那里。之后的 for 循环不需要为此目的进行任何编辑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-21
    相关资源
    最近更新 更多