如何在顺序模型中使用tf.keras.backend.ctc_decode?

时间:2020-06-23 07:13:34

标签: python tensorflow keras ocr

我正在尝试创建一个离线手写识别系统。因为我是初学者,所以我决定尝试重新创建medium article by Harald Scheidl中描述的模型。下图显示了模型框架。


**我的问题如下:

  1. 如何使用CTC decode from keras。我正在使用具有keras图层的顺序模型。
  2. CTC损失会成为编译参数中的损失函数吗?**

2 个答案:

答案 0 :(得分:0)

假设您有一个编码器/解码器模型,该模型输出单词在位置t处在[0,T)范围内的t的概率分布。使用此输出,您可以组成一个句子,该句子在位置t处以最高概率出现该单词,这种方法称为 greedy Greedy 在分类任务上效果很好,但对于句子生成而言,输出可能看起来有些奇怪。 另一方面,您可以使用光束搜索。光束搜索非常容易理解(我链接here是了解它的一个很好的资源),简而言之,我们可以说光束搜索通过仅计算可能序列的似然来寻找最可能的输出序列S乘以概率,然后选择最可能的概率:p(s)= p(0)* p(1)* ... * p(T)。

CTC损失有点特殊,因此有一个自定义输出,该输出还带有额外的字符以指示位置t与先前的位置相同。使用keras API中的ctd_decoder,您可以使用贪婪或波束搜索方法来解码CTC输出序列。

答案 1 :(得分:0)