给定logits(从RNN/Lstm/Gru以时间主格式输出,即(maxTime,batchSize,numberofClasses)),ctc贪婪解码器如何执行解码以生成输出序列。在
我在它的网页https://www.tensorflow.org/api_docs/python/tf/nn/ctc_greedy_decoder上发现了这个“对input(best path)中给定的logits执行贪婪解码”。在
一种可能性是在每个时间步选择最大值的输出类,折叠重复并生成相应的输出序列。是ctc贪婪解码器在这里还是其他什么?举例说明很有用。在
ctc贪心译码器的运算实现了最佳路径解码,这在TF源代码[1]中也有说明。在
解码分两步完成:
让我们看一个例子。神经网络输出具有5个时间步长和3个字符的矩阵(“A”、“B”和空白“-”)。 我们在每个时间步中选择最有可能的字符,这给了我们最好的路径:“aaa-b”。 然后,我们去掉重复字符,得到“a-b”。最后,我们去掉所有空白,得到“ab”作为结果。在
关于CTC的更多信息可以在[2]中找到,关于如何在Python中使用它的一个例子如[3]所示。在
[1]ctc贪心译码器的实现:https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/util/ctc/ctc_decoder.h#L69
[2]关于CTC、最佳路径解码和波束搜索解码的更多信息:https://towardsdatascience.com/5a889a3d85a7
[3]演示如何使用ctc贪心解码器的示例代码:https://github.com/githubharald/SimpleHTR/blob/master/src/Model.py#L94
相关问题 更多 >
编程相关推荐