问题标签 [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 投票
2 回答
1478 浏览

python - 如何正确使用 tensorflow ctc 光束搜索?

我想对音素概率值矩阵(给出的 ASR 模型的输出)执行 CTC Beam Search。Tensorflow 有一个 CTC Beam Search实现,但它的文档记录很差,我没有给出一个有效的例子。我想编写一个代码以将其用作基准。

到目前为止,这是我的代码:

我在理解代码时遇到问题:

  • 在示例中,垫子的形状为 (2, 4),但 tensorflow 模块需要 (2, 1, 4) 形状,所以我用它重塑垫子matrix = np.reshape(matrix, (matrix.shape[0], 1,matrix.shape[1])) 但这在数学上意味着什么?垫子矩阵是一样的吗?还是我在这里混在一起?中间的 1 是我理解的批量大小。
  • decode_ctcBeam函数返回一个列表,在它给出的示例中 [2],这应该意味着来自已定义类的“CH” 。如果我有一个更大的输入矩阵,比如说 40 个音素,我该如何概括这一点并找到识别的音素序列?

期待您的回答/评论!谢谢!

0 投票
1 回答
230 浏览

python-3.x - CTC + BLSTM 架构在第一个 epoch 之前停止/挂起

我正在研究识别在线手写识别的代码。它适用于 CTC 损失函数和 Word Beam Search(自定义实现:githubharald)

TF 版本:1.14.0

以下是使用的参数:

我面临的问题是,在将解码器从 CTC Greedy Decoder 更改为 Word Beam Search 之后,我的代码在特定步骤后停止。它没有显示第一个 epoch 的输出,现在卡在那里大约 5-6 小时。

它被卡住的步骤:tensorflow/stream_executor/platform/default/dso_loader.cc:42] Successfully opened dynamic library libcublas.so.10

我正在使用 Nvidia DGX-2 进行训练(名称:Tesla V100-SXM3-32GB)

0 投票
0 回答
364 浏览

python - Keras/Tensorflow 中的自定义 CTC 损失函数

我觉得我从根本上误解了一些东西。我浏览了 Keras 文档,但无济于事。我正在尝试为我的神经网络实现 ctc_batch_cost 损失。我的神经网络以 LSTM 层结束,该层将序列返回到具有 4+1 个符号 softmax 输出的密集层中。输出形状有 20 个时间步长,如下所示:

我的标签只是应该输出的可变长度的字符串。

这是我对 CTC 功能的尝试:

现在,当然,Tensorflow 当前出现以下错误:

这是可以理解的,因为在编译时变量,例如sampleswill be None。但我不知道如何使用它。任何提示表示赞赏。我想了解正在发生的事情,而不仅仅是简单地解决问题。我尝试测试None并返回一个占位符,但这也不起作用,一开始感觉就像一个黑客。

谢谢

0 投票
1 回答
243 浏览

deep-learning - CTC语音识别中常用的前缀波束搜索可以用这种更简单的方式实现吗?

最近在学习语音识别,了解到前缀beam search的思想是把具有相同前缀的路径合并起来,比如[1,1,_]and [_,1,_](可以看到,_表示空白标记)。

基于这种理解,我实现了我的一个版本,可以使用如下伪代码进行简化:

但是我在网上找到的大多数版本(根据论文)都是这样的:

两者的结果不同,我的版本倾向于返回更长的字符串。而且我不太了解主要的两个方面:

  1. 我的版本有什么细节没有考虑到吗?
  2. 通用版本同时生成新前缀,new_prefix = prefix + (i,)无论前一个的结尾是否与给定的's'相同。例如,旧前缀是[a,a,b]and,当添加新字符 s 时,都保存[a,a,b][a,a,b,b]如果这样做有什么目的?它会导致重复计算吗?

期待您的回答,提前致谢!

0 投票
1 回答
1229 浏览

python - TensorFlow 回调作为 CTC 的自定义指标

为了在训练我的模型(用 TensorFlow 版本 2.1.0 编写)期间产生更多指标,例如字符错误率 (CER) 和字错误率 (WER),我创建了一个回调以传递给我的 fit 函数模型。它能够在一个纪元结束时生成 CER 和 WER。这是我的第二选择,因为我想为此创建一个自定义指标,但您只能将 Keras 后端功能用于自定义指标。有没有人对如何将下面的回调转换为自定义指标(然后可以在验证和/或训练数据的训练期间计算)有任何建议?

我遇到的一些障碍是:

  • 未能将 K.ctc_decode 结果转换为稀疏张量
  • 如何使用 Keras 后端计算像 editdistance 这样的距离?
0 投票
1 回答
1733 浏览

tensorflow - 如何在 keras 中使用 tensorflow ctc_batch_cost 函数?

几天来,我一直在尝试在 keras 中实现 CTC 损失函数。

不幸的是,我还没有找到一种适合 keras 的简单方法。我找到了 tensorflow 的tf.keras.backend.ctc_batch_cost功能,但没有太多关于它的文档。我对一些事情感到困惑。首先,input_lengthlabel_length参数是什么?我正在尝试制作一个手写识别模型,我的图像是 32x128,我的 RNN 有 32 个时间步长,我的字符列表的长度为 80。我尝试对两个参数都使用 32,这给了我下面的错误。

函数不应该已经从前两个参数(和)的形状中知道input_length和吗?label_lengthy_truey_pred

其次,我需要对训练数据进行编码吗?这一切都是自动完成的吗?

我知道 tensorflow 也有一个名为tf.keras.backend.ctc_decode. 这仅在进行预测时使用吗?

错误:

tensorflow.python.framework.errors_impl.InvalidArgumentError:squeeze_dims[0] 不在 [0,0) 中。对于具有输入形状的“loss/softmax_loss/Squeeze”(操作:“Squeeze”):[]

模型:

这是我引用的 tensorflow 文档:

https://www.tensorflow.org/api_docs/python/tf/keras/backend/ctc_batch_cost

0 投票
1 回答
206 浏览

loss-function - 具有 CTC 损失的 CNN

我想使用预训练的 CNN 模型(ResNet50、VGG 等)提取特征,并将这些特征与 CTC 损失函数一起使用。

我想将其构建为文本识别模型。

任何人都知道我该如何实现这一目标?

0 投票
0 回答
206 浏览

python - 了解 K.ctc_decode

是 Keras测试test_ctc_decode_greedyctc_decode

这是我稍作修改的示例:

输出:

问题:

  1. 在推理时,我们如何获得预测的有效时间步数(例如,一些最后一行被忽略)?据我了解,我们有固定大小的矩阵作为网络的输出,我们是否需要另一个输出来预测有效时间步的数量?

  2. 据我了解log_prob是负对数似然(值越小越好->网络对输出更有信心),但由于时间步数可能不同,log_prob不同时间步长的样本之间的值不可比较(因为我不看不到长度的任何归一化)?

更新:

为了在这里提供更多上下文,我使用真实字母和文本编码/解码的更具可读性的示例,在这里我使用input_length = n_time_steps

输出:

0 投票
1 回答
426 浏览

machine-learning - 语音识别中的置信度分数是什么意思?

许多语音转文本服务(例如 Google 的)提供了置信度分数。至少对于谷歌来说,它介于 0 和 1 之间,但显然不是特定转录正确的概率,因为替代转录的置信度加起来超过 1。此外,有时置信度较高的结果排名较低。

那么,它是什么?语音识别社区中是否存在公认的“置信度分数”含义?我已经看到对最小贝叶斯风险的引用,但即使这是他们正在做的事情,这也不能回答这个问题,因为这取决于辅助损失函数的选择。

0 投票
1 回答
543 浏览

tensorflow - 无效参数:目标转换序列没有足够的时间

如何从我的代码中将此错误转换为警告(ignore_longer_outputs_than_inputs)?[.ipynb]

如果你愿意,你可以在这里查看我的完整代码:https ://colab.research.google.com/drive/1nMRNUsLDNrpgeTxPFQ4mhobnFdpbmwUx