【发布时间】:2019-12-19 20:15:08
【问题描述】:
我正在编写一个识别在线手写识别的代码。 它适用于 CTC 损失函数和 Word Beam Search(自定义实现:githubharald)
TF 版本:1.14.0
以下是使用的参数:
batch_size: 128
total_epoches: 300
hidden_unit_size: 128
num_layers: 2
input_dims: 10 (number of input Features)
num_classes: 80 (CTC output logits)
save_freq: 5
learning_rate: 0.001
decay_rate: 0.99
momentum: 0.9
max_length: 1940.0 (BLSTM with variable length time stamps)
label_pad: 63
我面临的问题是,在将解码器从 CTC Greedy Decoder 更改为 Word Beam Search 后,我的代码在特定步骤后停止。它没有显示第一个 epoch 的输出,现在卡在那里大约 5-6 小时。
被卡住的步骤:tensorflow/stream_executor/platform/default/dso_loader.cc:42] Successfully opened dynamic library libcublas.so.10
我正在使用 Nvidia DGX-2 进行训练(名称:Tesla V100-SXM3-32GB)
【问题讨论】:
-
你不应该在训练代码中使用词束搜索,因为它比最佳路径解码慢。但是,它仍然不应该花费 5-6 小时(除非您将一些更复杂的模式与非常大的语言模型结合使用,但在简单的“单词”模式下绝对不会花费那么长时间)。
-
您好,感谢您的回答。好的,所以我在验证期间进行采样,并在特定批次的每个 epoch 之后转储 rnn 输出(每次都说第 5 批次)。在这个转储的 rnn 输出上使用 Word Beam Search(使用 NGramForecast 方法)解码器作为 C.E.R. 的测试措施是否可以? (字符错误率)。这种策略合法吗?
标签: python-3.x tensorflow lstm handwriting-recognition ctc