给定 logits(从 RNN/Lstm/Gru 以时间主要格式输出,即 (maxTime, batchSize, numberofClasses)),ctc 贪婪解码器如何进行解码以生成输出序列。
我在其网页https://www.tensorflow.org/api_docs/python/tf/nn/ctc_greedy_decoder上发现了“对输入(最佳路径)中给出的对数进行贪婪解码” 。
一种可能性是在每个时间步选择具有最大值的输出类,折叠重复并生成相应的输出序列。是 ctc 贪婪解码器在这里做的还是别的什么?使用示例进行解释将非常有用。
ctc_greedy_decoder操作实现了最佳路径解码,这在 TF 源代码 [1] 中也有说明。
解码分两步完成:
让我们看一个例子。神经网络输出具有 5 个时间步长和 3 个字符(“a”、“b”和空白“-”)的矩阵。我们在每个时间步中选取最可能的字符,这为我们提供了最佳路径:“aaa-b”。然后,我们删除重复的字符并得到“ab”。最后,我们删除所有空格并得到“ab”作为结果。
关于 CTC 的更多信息可以在 [2] 中找到,关于如何在 Python 中使用它的示例在 [3] 中显示。
[1] ctc_greedy_decoder的实现:https : //github.com/tensorflow/tensorflow/blob/master/tensorflow/core/util/ctc/ctc_decoder.h#L69
[2]关于CTC、最佳路径解码和波束搜索解码的更多信息:https : //towardsdatascience.com/5a889a3d85a7
[3] 显示如何使用 ctc_greedy_decoder 的示例代码:https : //github.com/githubharald/SimpleHTR/blob/master/src/Model.py#L94
| 归档时间: |
|
| 查看次数: |
2045 次 |
| 最近记录: |