问题标签 [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.
python - K.ctc_batch_cost 中的错误:tensorflow.python.framework.errors_impl.InvalidArgumentError:sequence_length(0) <= 30
我在 Keras 中运行 CRNN 模型来执行一些手写识别,但在计算 CTC 损失时出现错误。
仅当我尝试为我的 CNN 加载预训练网络时才会出现此问题。如果我从头开始制作自己的 CNN 网络,它工作得很好。
这是我遇到错误的模型:
这工作正常:
这是 ctc_loss 函数:
当我运行 Densenet_LSTM 模型时,我收到以下错误:
请帮忙。
python - PYTORCH支持的“torch.nn.CTCLoss”和torch_baidu_ctc支持的“CTCLoss”有区别吗?
PYTORCH支持的“torch.nn.CTCLoss”和torch_baidu_ctc支持的“CTCLoss”有区别吗?
我想,当我比较教程代码时,我没有注意到任何区别。
有谁知道真相吗?
教程代码位于下方。
火炬.nn.CTCLoss
我是韩国人。英语不是我的第一语言。所以我英语不好。如果有什么没有很好的交付,请发表评论。我会尽快改句。
python - 带有 keras ocr 示例的负标签
我正在尝试基于 keras ocr 示例实现手写 ocr:link。但是我收到以下错误:
下面是生成器、ctc 和 train 函数:
我猜“-1”标签来自这一行:
在原始代码中,有一条类似的行(第 220 行),但运行良好:
我认为 '-1' 是填充序列的一种方式,但这个值似乎被 ctc 函数禁止,这里有什么我遗漏的吗?
image - 在 keras 中实现没有 textImagegenerator 的 CTC
在 keras/examples/image_ocr 中,ctc 损失是使用 TextImageGenrator 计算的,它需要字母组合文件和双字母组合文件。是否可以只提供图像和真实值来计算损失和预测文本?
machine-learning - RNN Transducer 训练中的标签对齐
我试图了解 RNN Transducer 如何使用地面实况标签进行训练。在 CTC 的情况下,我知道该模型是用损失函数训练的,该函数总结了所有可能的地面实况标签对齐的所有分数。
但在 RNN-T 中,预测网络必须从最后一步接收输入才能产生类似于“教师强制”方法的输出。但我的疑问是,是否应该将基本事实标签转换为所有可能的空白标签对齐,并通过教师强制“方法将每个对齐馈送到网络?
python - 了解 Keras 中语音识别的 CTC 损失
我试图了解 CTC 损失如何用于语音识别以及如何在 Keras 中实现它。
- 我认为我理解的(如果我错了,请纠正我!)
总的来说,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 中每个批次项目的序列长度。
(来源)
现在,我面临一些问题:
- 我不明白的
- 这种植入是编码和使用 CTC 损失的正确方法吗?
- 我不明白y_true、input_length和 label_length具体是什么。有什么例子吗?
- 我应该以什么形式将标签提供给网络?再次,有什么例子吗?
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
?
我曾尝试过这些:
log_softmax
输入,然后将其发送到pytorch.nn.CTCLoss
,tf.nn.log_softmax
输入,然后将其发送到tf.nn.ctc_loss
直接将输入发送到
tf.nn.ctc_loss
直接将输入发送到
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
,但实际上它们不是,但我怎样才能使它们相同?
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 时超出了最大递归深度目的
tensorflow - 是否有 EnCTC 的 tensorflow 实现
是否存在具有最大熵正则化的连接主义时间分类中描述的 EnCTC 的 tensorflow 实现?
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 链接:这里
以下只是代码的核心部分。
常数:
数据集生成:
数据集:
模型:
训练: