我正在做我的第一个tensorflow项目。
对于给定的输入和期望的序列,我需要获得ctc概率(而不是ctc损失)。
是否有任何api或方法可以在python或c++中实现?
我更喜欢python方面,但c++方面也可以。
最佳答案
根据Graves的论文[1],该批次的损失定义为该批次中所有样本(x,z)的总和(log(p(z | x)))。
如果使用1的批处理大小,则得到log(p(z | x)),即在给定输入x的情况下看到标签z的对数概率。这可以通过TensorFlow中的ctc_loss函数来实现。
您也可以自己实现本文[1]的4.1节中描述的前向后向算法的相关部分。
对于较小的输入序列,可以通过构建图3中所示的路径并在RNN输出中的所有路径上求和来使用简单的实现。
我对长度为16的序列和长度为100的序列进行了此操作。对于前一种方法,幼稚的方法就足够了,而对于后一种方法,则需要提出的动态编程方法。
[1]连接主义者的时间分类:使用递归神经网络标记未分段的序列数据