【问题标题】:How to design the label for tensorflow's ctc loss layer如何为tensorflow的ctc loss层设计标签
【发布时间】:2017-02-27 14:21:42
【问题描述】:

我刚开始在 tensorflow(r1.0) 中使用 ctc 损失层,对“标签”输入有点困惑

在 tensorflow 的 API 文档中,它说

标签:一个 int32 稀疏张量。 labels.indices[i, :] == [b, t] 表示 labels.values[i] 存储(batch b,时间 t)的 id。 labels.values[i] 必须采用 [0, num_labels) 中的值

  1. [b,t] 和 values[i] 是否表示批次中序列“b”的“t”处有标签“values[i]”?
  2. 上面说值必须在 [0,num_labels) 中,但是对于稀疏张量,除了某些指定的地方,几乎所有地方都是 0,所以我真的不知道 ctc 的稀疏张量应该如何
  3. 例如,如果我有一个手势短视频,并且它有一个标签“1”,我应该将所有时间步的输出标记为“1”,还是只将最后一个时间步标记为“1”并且将其他视为“空白”?

谢谢!

【问题讨论】:

    标签: tensorflow recurrent-neural-network


    【解决方案1】:

    解决您的问题:
    1. 此处文档中的符号似乎有点误导,因为输出标签索引t 不必与输入时间片相同,它只是输出序列的索引。可以使用不同的字母,因为输入和输出序列没有明确对齐。否则,您的断言似乎是正确的。下面我举个例子。

    1. 零是序列输出标签中的有效类。 TensorFlow 的 CTC 实现中所谓的空白标签是最后一个(最大的)类,无论如何它可能不应该出现在你的基本事实标签中。因此,如果您正在编写二进制序列分类器,您将拥有三个类,0(例如“关闭”)、1(“开启”)和 2(CTC 的“空白”输出)。

    2. CTC Loss 用于用 sequence 输出标记序列输入。如果你只有 对于序列输入的单个类标签输出,您最好在 RNN 单元的最后一个时间步的输出上使用 softmax 交叉熵损失。

    如果您最终使用 CTC 损失,您可以在此处通过阅读器查看我是如何构建训练序列的:How to generate/read sparse sequence labels for CTC loss within Tensorflow?

    例如,在我批处理两个分别具有标签序列[44, 45, 26, 45, 46, 44, 30, 44][5, 8, 17, 4, 18, 19, 14, 17, 12] 的示例后,我通过评估(批处理)SparseTensor 得到以下结果:

    SparseTensorValue(indices=array([[0, 0],
           [0, 1],
           [0, 2],
           [0, 3],
           [0, 4],
           [0, 5],
           [0, 6],
           [0, 7],
           [1, 0],
           [1, 1],
           [1, 2],
           [1, 3],
           [1, 4],
           [1, 5],
           [1, 6],
           [1, 7],
           [1, 8]]), values=array([44, 45, 26, 45, 46, 44, 30, 44,  5,  8, 17,  4, 18, 19, 14, 17, 12], dtype=int32), dense_shape=array([2, 9]))
    

    注意稀疏张量值中的索引行如何对应于批号,而列对应于该特定标签的序列索引。这些值本身就是序列标签类。秩为 2,最后一维的大小(在本例中为 9)是最长序列的长度。

    【讨论】:

    • 抱歉回复晚了,所以“t”只是特定标签的顺序,不管相应的输入序列会持续多久?
    • 我相信这是对的。但是,虽然模型每个输入切片最多只能产生一个输出,但您的标签序列不应长于输入长度。 (通过标签合并,它还可以产生比输入更少的输出。)
    猜你喜欢
    • 1970-01-01
    • 2017-04-08
    • 2017-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多