我正在研究一个识别在线手写识别的代码。它与CTC丢失函数和字束搜索(自定义实现: 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贪婪解码器更改为字束搜索之后,我的代码在执行特定步骤后就会停止。它没有显示出第一个时代的输出,而是停留了大约5-6个小时。
它在后面的步骤:tensorflow/stream_executor/platform/default/dso_loader.cc:42] Successfully opened dynamic library libcublas.so.10
我正在使用Nvidia DGX-2来训练(名称:TeslaV100SXM3-32GB)
发布于 2019-12-21 20:20:57
这是报纸描述词束搜索,也许它包含了一些有用的信息给你(我是论文的作者)。
我将把你的任务分为两部分:
要为第(1)部分选择最佳模型,使用最佳路径(贪婪)解码进行验证就足够了。如果最佳路径包含错误的字符,那么波束搜索也很有可能无法恢复(即使使用语言模型)。
现在转到第(2)部分。关于字束搜索的运行时:您正在使用"NGramsForecast“模式,这是所有模式中最慢的。它有运行时间O(W*log(W)),W是字典中的单词数。"NGrams“有O(log(W))。如果您查看该论文并转到表1,您会发现当使用预测模式("NGramsForecast“或"NGramsForecastAndSample")时,运行时会变得更糟,而字符错误率可能会更好,也可能不会更好。“Word”模式有90ms运行时,而"NGramsForecast“对于IAM数据集有超过16s )。
对于实际用例,我建议如下:
https://stackoverflow.com/questions/59416387
复制相似问题