问题标签 [ctc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
355 浏览

python - K.ctc_batch_cost 中的错误:tensorflow.python.framework.errors_impl.InvalidArgumentError:sequence_length(0) <= 30

我在 Keras 中运行 CRNN 模型来执行一些手写识别,但在计算 CTC 损失时出现错误。

仅当我尝试为我的 CNN 加载预训练网络时才会出现此问题。如果我从头开始制作自己的 CNN 网络,它工作得很好。

这是我遇到错误的模型:

这工作正常:

这是 ctc_loss 函数:

当我运行 Densenet_LSTM 模型时,我收到以下错误:

请帮忙。

0 投票
2 回答
3370 浏览

python - PYTORCH支持的“torch.nn.CTCLoss”和torch_baidu_ctc支持的“CTCLoss”有区别吗?

PYTORCH支持的“torch.nn.CTCLoss”和torch_baidu_ctc支持的“CTCLoss”有区别吗?

我想,当我比较教程代码时,我没有注意到任何区别。

有谁知道真相吗?

教程代码位于下方。

火炬.nn.CTCLoss

我是韩国人。英语不是我的第一语言。所以我英语不好。如果有什么没有很好的交付,请发表评论。我会尽快改句。

0 投票
1 回答
334 浏览

python - 带有 keras ocr 示例的负标签

我正在尝试基于 keras ocr 示例实现手写 ocr:link。但是我收到以下错误:

下面是生成器、ctc 和 train 函数:

我猜“-1”标签来自这一行:

在原始代码中,有一条类似的行(第 220 行),但运行良好:

我认为 '-1' 是填充序列的一种方式,但这个值似乎被 ctc 函数禁止,这里有什么我遗漏的吗?

0 投票
0 回答
48 浏览

image - 在 keras 中实现没有 textImagegenerator 的 CTC

在 keras/examples/image_ocr 中,ctc 损失是使用 TextImageGenrator 计算的,它需要字母组合文件和双字母组合文件。是否可以只提供图像和真实值来计算损失和预测文本?

0 投票
1 回答
973 浏览

machine-learning - RNN Transducer 训练中的标签对齐

我试图了解 RNN Transducer 如何使用地面实况标签进行训练。在 CTC 的情况下,我知道该模型是用损失函数训练的,该函数总结了所有可能的地面实况标签对齐的所有分数。

但在 RNN-T 中,预测网络必须从最后一步接收输入才能产生类似于“教师强制”方法的输出。但我的疑问是,是否应该将基本事实标签转换为所有可能的空白标签对齐,并通过教师强制“方法将每个对齐馈送到网络?

0 投票
1 回答
6390 浏览

python - 了解 Keras 中语音识别的 CTC 损失

我试图了解 CTC 损失如何用于语音识别以及如何在 Keras 中实现它。

  1. 我认为我理解的(如果我错了,请纠正我!)

总的来说,CTC 损失是在经典网络之上添加的,以便逐个元素地解码顺序信息(文本或语音的逐字母),而不是直接直接解码元素块(例如单词)。

假设我们将某些句子的话语作为 MFCC 提供。

使用 CTC-loss 的目标是学习如何使每个字母在每个时间步与 MFCC 匹配。因此,Dense+softmax 输出层由与组成句子所需的元素数量一样多的神经元组成:

  • 字母 (a, b, ..., z)
  • 空白标记 (-)
  • 一个空格 (_) 和一个结束字符 (>)

然后,softmax 层有 29 个神经元(26 个用于字母表 + 一些特殊字符)。

为了实现它,我发现我可以做这样的事情:

使用 ALPHABET_LENGTH = 29(字母长度 + 特殊字符)

和:

  • y_true : 包含真值标签的张量 (samples, max_string_length)。
  • y_pred:张量(samples,time_steps,num_categories)包含预测或softmax的输出。
  • input_length : 张量 (samples, 1) 包含 y_pred 中每个批次项目的序列长度。
  • label_length:张量 (samples, 1) 包含 y_true 中每个批次项目的序列长度。

来源

现在,我面临一些问题:

  1. 我不明白的
    • 这种植入是编码和使用 CTC 损失的正确方法吗?
    • 我不明白y_trueinput_lengthlabel_length具体是什么。有什么例子吗?
    • 我应该以什么形式将标签提供给网络?再次,有什么例子吗?
0 投票
1 回答
1116 浏览

tensorflow - tf.nn.ctc_loss 和 pytorch.nn.CTCLoss 有什么区别

对于相同的输入和标签:

  • 的输出pytorch.nn.CTCLoss为 5.74,
  • 的输出tf.nn.ctc_loss为 129.69,
  • 但输出math.log(tf ctc loss)是 4.86

pytorch.nn.CTCLoss那么with 和有什么区别tf.nn.ctc_loss

我曾尝试过这些:

  1. log_softmax输入,然后将其发送到pytorch.nn.CTCLoss,

  2. tf.nn.log_softmax输入,然后将其发送到tf.nn.ctc_loss

  3. 直接将输入发送到tf.nn.ctc_loss

  4. 直接将输入发送到tf.nn.ctc_loss, 然后math.log(output of tf.nn.ctc_loss)

在案例 2、案例 3 和案例 4 中,计算结果与pytorch.nn.CTCLoss

我希望 的输出tf.nn.ctc_loss与 的输出相同pytorch.nn.CTCLoss,但实际上它们不是,但我怎样才能使它们相同?

0 投票
1 回答
1102 浏览

keras - 为什么我在 Tensorflow 2.0 的 Keras 中不断收到错误消息“调用 Python 对象时超出了最大递归深度”?

我正在尝试在 tensorflow 2.0 版本的 Keras 中使用 CNN、GRU 和 CTC 训练堆叠式神经网络架构。我不断收到一条错误消息,提示“RecursionError:调用 Python 对象时超出了最大递归深度”。

我尝试使用 sys.setrecursionlimit() 导入 sys 并将递归限制设置为非常高,但程序只是停止运行。

该脚本在带有 keras 2.2.4 的 tensorflow 1.10.0 中执行时运行良好,并且不会产生我不断遇到的错误:

Traceback(最近一次调用最后一次):文件“F:\Lip Reading System\vsnet\training_tf2.py”,第 71 行,validation_steps=lip_gen_test.video_dataset_steps)...... RecursionError:调用 Python 时超出了最大递归深度目的

0 投票
0 回答
75 浏览

tensorflow - 是否有 EnCTC 的 tensorflow 实现

是否存在具有最大熵正则化的连接主义时间分类中描述的 EnCTC 的 tensorflow 实现?

0 投票
2 回答
1117 浏览

python - CTC:空白必须在标签范围内

概括

我正在为验证码识别添加字母,但是当添加字母时,pytorch 的 CTC 似乎无法正常工作。

我试过的

起初,我修改BLANK_LABEL为 62,因为有 62 个标签(0-9,az,AZ),但它给了我运行时错误blank must be in label range。我也尝试过BLANK_LABEL=0,然后将 1~63 分配为非空白标签,但它输出 NaN 作为损失。

编码

这是我的代码当前版本的 colab 链接:这里

以下只是代码的核心部分。

常数:

数据集生成:

数据集:

模型:

训练: