【问题标题】:CTC Loss InvalidArgumentError: sequence_length(b) <= timeCTC 损失 InvalidArgumentError: sequence_length(b) <= time
【发布时间】:2017-04-15 06:24:56
【问题描述】:

我在尝试通过 keras (ctc_batch_cost) 使用 tf.nn.ctc_loss 时遇到此错误:

InvalidArgumentError(回溯见上文):sequence_length(4)

根据 tf.nn.ctc_loss 的文档,输入要求是:

sequence_length(b)

max(labels.indices(labels.indices[:, 1] == b, 2))

我很难理解这意味着什么——b 是什么,sequence_length(b) 是什么?

【问题讨论】:

    标签: tensorflow keras


    【解决方案1】:

    在这种情况下,b 是小批量中的每个示例。 sequence_length(b) 是该示例的时间戳数。这是在传递给tf.nn.ctc_losssequence_length 参数中指定的,这是一个序列长度的一维张量。

    【讨论】:

    • time 在这种情况下是什么意思?我知道sequence_length(b) &lt;= time for all b 意味着小批量中每个示例的序列长度应小于或等于time。愿意举个例子吗?
    • sequence_length 应该是一个张量,表示您的小批量中每个序列的大小。时间是数据张量的第二维(应按 [batch, time, ...] 排序)。这只是说每个示例的序列长度应该小于时间维度的最大大小
    • 是的。每个示例的序列长度应该指的是如果您在小批量中只有该示例,那么时间维度是多少
    • 如果一个示例有 10 个时间步长而另一个只有 5 个时间步长,而您仍想对您的计算进行小批量处理,该怎么办?
    • 输入序列的长度。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-16
    • 2020-07-25
    • 1970-01-01
    • 1970-01-01
    • 2018-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多