连接主义时间分类 (CTC) 空白标签

Connectionist Temporal Classification (CTC) blank label

我正在尝试在我的网络中使用 CTC 损失函数,但不太了解何时将 'blank' 标签作为标签提供。

我按照Molchanov的描述在手势识别中使用它,但让我感到困惑的是还有一个'no gesture'。

在tensorflow docs中,描述的是

The inputs Tensor's innermost dimension size, num_classes, represents num_labels + 1 classes, where num_labels is the number of true labels, and the largest value (num_classes - 1) is reserved for the blank label.

如果我现在使用'blank'标签,表示没有手势,我的训练受限,因为错误

Saw a non-null label (index >= num_classes - 1) following a null label

我假设空标签与空白标签相同。

问题是,当我想提供以无手势(映射到空标签)开头然后有手势的数据时,我得到了这个错误。 我可以通过在现有标签旁边添加两个标签来避免它,一个用于 'no gesture',一个用于 'blank label/null label'。然后我只提供 'no gesture' 标签而不是 'blank' 标签,但这似乎不太正确。

所以我的问题是,我应该使用 'blank/null' 标签做什么?

我可以想象在语言处理中,您通常会使用句末点作为 'null' 标签?但是没有结束的手势,因为它是一个连续的流。

谢谢

编辑 我强烈推荐阅读这篇 distill article。 "The ϵ (blank) token doesn’t correspond to anything and is simply removed from the output." 用于'interrupt'重复标记的合并。

空白标签作为两个 class 之间的过渡状态。

Read more

为了回答我的问题本身,您没有将空白标签分配给任何东西,但仍然将其作为现有标签 class。 就我而言,我又添加了两个标签,一个用于无手势 class,一个用于空白。

(至少我是这样做的,并取得了一些不错的结果)