python - 如何知道 seq2seq 模型中是否达到了纪元点?

标签 python tensorflow recurrent-neural-network

多天以来,我一直在使用 seq2seq 模型默认设置的自定义并行语料库训练 seq2seq 模型,该语料库包含约一百万个句子。 以下是输出日志,如教程中所述,已超过 350k 步骤。我看到桶的困惑度突然显着增加,很长一段时间以来,整个火车的困惑度一直恒定在1.02,学习率也初始化为0.5,但现在显示为0.007左右,所以学习率也显着下降,而且系统的输出并不令人满意。 我如何知道是否达到了纪元点以及是否应该停止并重新配置参数调整和优化器改进等设置?

global step 372800 learning rate 0.0071 step-time 1.71 perplexity 1.02
  eval: bucket 0 perplexity 91819.49
  eval: bucket 1 perplexity 21392511.38
  eval: bucket 2 perplexity 16595488.15
  eval: bucket 3 perplexity 7632624.78
global step 373000 learning rate 0.0071 step-time 1.73 perplexity 1.02
  eval: bucket 0 perplexity 140295.51
  eval: bucket 1 perplexity 13456390.43
  eval: bucket 2 perplexity 7234450.24
  eval: bucket 3 perplexity 3700941.57
global step 373200 learning rate 0.0071 step-time 1.69 perplexity 1.02
  eval: bucket 0 perplexity 42996.45
  eval: bucket 1 perplexity 37690535.99
  eval: bucket 2 perplexity 12128765.09
  eval: bucket 3 perplexity 5631090.67
global step 373400 learning rate 0.0071 step-time 1.82 perplexity 1.02
  eval: bucket 0 perplexity 119885.35
  eval: bucket 1 perplexity 11166383.51
  eval: bucket 2 perplexity 27781188.86
  eval: bucket 3 perplexity 3885654.40
global step 373600 learning rate 0.0071 step-time 1.69 perplexity 1.02
  eval: bucket 0 perplexity 215824.91
  eval: bucket 1 perplexity 12709769.99
  eval: bucket 2 perplexity 6865776.55
  eval: bucket 3 perplexity 5932146.75
global step 373800 learning rate 0.0071 step-time 1.78 perplexity 1.02
  eval: bucket 0 perplexity 400927.92
  eval: bucket 1 perplexity 13383517.28
  eval: bucket 2 perplexity 19885776.58
  eval: bucket 3 perplexity 7053727.87
global step 374000 learning rate 0.0071 step-time 1.85 perplexity 1.02
  eval: bucket 0 perplexity 46706.22
  eval: bucket 1 perplexity 35772455.34
  eval: bucket 2 perplexity 8198331.56
  eval: bucket 3 perplexity 7518406.42
global step 374200 learning rate 0.0070 step-time 1.98 perplexity 1.03
  eval: bucket 0 perplexity 73865.49
  eval: bucket 1 perplexity 22784461.66
  eval: bucket 2 perplexity 6340268.76
  eval: bucket 3 perplexity 4086899.28
global step 374400 learning rate 0.0069 step-time 1.89 perplexity 1.02
  eval: bucket 0 perplexity 270132.56
  eval: bucket 1 perplexity 17088126.51
  eval: bucket 2 perplexity 15129051.30
  eval: bucket 3 perplexity 4505976.67
global step 374600 learning rate 0.0069 step-time 1.92 perplexity 1.02
  eval: bucket 0 perplexity 137268.32
  eval: bucket 1 perplexity 21451921.25
  eval: bucket 2 perplexity 13817998.56
  eval: bucket 3 perplexity 4826017.20

什么时候才会停止?

最佳答案

您的开发数据和训练数据之间似乎存在差异:

global step 374600 learning rate 0.0069 step-time 1.92 perplexity 1.02

eval: bucket 0 perplexity 137268.32

您的训练困惑度为 1.02——该模型在其接收的训练数据上基本上是完美的。但你的开发人员的困惑是巨大的,该模型根本不适用于开发集。在早期时代它是什么样子的?我怀疑有一些不匹配。也许火车和开发的标记化是不同的?也许您加载了错误的文件?也许原始翻译模型中的存储桶大小不适合您的开发数据?在不了解更多细节的情况下很难说。

至于何时停止:原始翻译模型具有无限的训练循环,因为它具有庞大的数据集和容量,并且可以在数周的训练中持续改进。但当学习率不再提高时,它也会降低学习率,所以如果你的学习率非常低(就像你的情况一样),这是一个明确的信号,你可以停止。

关于python - 如何知道 seq2seq 模型中是否达到了纪元点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35126954/

相关文章:

python - Pandas:将 pytz.FixedOffset 应用于系列

python - 在 matplotlib 中的日期时间轴上绘制矩形?

python - 使用 Tensorflow 模型正确构建文本数据以生成文本

tensorflow - 如何在Tensorflow中使用多层双向LSTM?

python - NLTK - 获取和简化标签列表

python - 在清除树时使用 ElementTree.iterparse() 时内存使用量是否应该增加?

Python 3.6 在尝试导入 Tensorflow 时抛出错误

python - Tensorflow-GPU 不使用带有 CUDA、CUDNN 的 GPU

tensorflow - 在 Keras 模型中使用 Tensorflow feature_column

python - 将 CNN 更改为 LSTM keras tensorflow