在 TensorFlow CTC(语言模型)中使用自定义 Beam 评分器

2024-02-16

是否可以从 Python 端在 TensorFlow CTC 实现中自定义 Beam Scorer?我在 CTCBeamSearchDecoder C++ 类构造函数的评论中看到了这种可能性,但想知道如何为 Python 用户提供此功能?

我们遇到的具体问题是将语言模型插入基于 CTC 的语音解码器。语言模型可以是预训练的 TensorFlow 子图,能够输出波束分数调整的概率。但我们需要一种方法将其注入光束刻划器中。


目前,Python 还没有 API 可以将语言模型与自定义评分器结合使用。欢迎贡献,但在 Python API 中实现这一点存在一些困难,因为它需要在解码器操作内的独立会话中运行 TF LM 子图,而这些不能很好地融合在一起。

最简单的方法是在 C++ 中,需要扩展 BaseBeamScorer 类以及 BeamState(类似于测试中看到的),并在通常进入的张量流图的输出之上进一步运行 CTCBeamSearchDecoder::Decode ctc_beam_search_decoder 操作。

通过这样做,您的 BeamScorer 实现可以利用您手头的任何语言模型,并且只需在将波束从一种状态扩展到另一种状态时返回适当的分数即可。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 TensorFlow CTC(语言模型)中使用自定义 Beam 评分器 的相关文章

随机推荐

  • 如何使用正则表达式搜索带括号的字符串?

    我有一个 txt 文件 其中包含以下字符串 A 123 B 456 Ab 123 我想搜索Ab 123 在txt文件中 我尝试过的 re search r Ab 123 string 有 12 个具有特殊含义的字符 您可以使用以下命令转义到
  • 与 preg_match_all 匹配

    我得到这个正则表达式 val 123 4 56 regex preg match all regex val matches 谁能告诉我为什么这只匹配最后一个数字 56 而不是每组数字 这是上面的正则表达式运行后 matches 包含的内容
  • 使用不带 InvokePattern 或 clickablePoint 的 UI Automation在单击按钮时调用

    我尝试将点击消息发送到 或调用 另一个应用程序中的按钮 我使用 UISpy exe 并可以找到我需要的元素 但它没有 id 没有 clickablePoint 也没有 Invoke 模式 我尝试了以下代码 var processStartI
  • 一种为对象数据库建立索引的方法

    我正在使用对象数据库 ZODB 来存储许多对象之间的复杂关系 但遇到了性能问题 因此 我开始构建索引以加快对象检索和插入速度 这是我的故事 希望对您有所帮助 最初 当我向数据库添加对象时 我会将其插入专用于该对象类型的分支中 为了防止多个对
  • 没有 JDK 的 JRE 6 (Windows) 上的堆转储

    有没有办法在没有安装 JDK 的远程计算机上创建堆转储 我无法更改安装 设置 并且它在 Windows 上运行 所以我可以随时访问命令行工具 问题是远程计算机上的 Java 应用程序冻结 没有内存不足异常 因此 XX HeapDumpOnO
  • JAXB 解组忽略命名空间将元素属性变成 null

    我正在尝试使用 JAXB 将 xml 文件解组为对象 但遇到了一些困难 实际项目的 xml 文件中有几千行 因此我以较小的规模重现了错误 如下所示 XML 文件
  • 防止“xmlValue”剥离
    标签

    我遇到了一个问题 其中xmlValue剥离 br 我需要保留的标签 或转换为其他角色 然后我可以strsplit on 这是一个例子 gt f lt htmlParse getForm http sites target com site
  • WaitForMultipleObjects 会修改*多个*对象的状态吗? [复制]

    这个问题在这里已经有答案了 使用时WaitForMultipleObjects bWaitAll FALSE http msdn microsoft com en us library windows desktop ms687025 28
  • 为什么 1ul << 64 返回 1 而不是 0? [复制]

    这个问题在这里已经有答案了 考虑下面的代码 Simply loop over until 64 is hit unsigned long x 0 for int i 0 i lt 64 i if i 64 x 1ul lt lt i pri
  • 给定一个整数数组,使用数组中的数字找到最大的数字,使其能被 3 整除

    例如 数组 4 3 0 1 5 假设所有数字都 gt 0 数组中的每个元素也对应一个数字 即数组中的每个元素都在 0 到 9 之间 在上面的数组中 最大的数字是 5430 使用数组中的数字 5 4 3 和 0 我的方法 为了能被 3 整除
  • 通过沿最后一个轴对每个第 n 个元素进行采样来构造数组

    Let a是一些 不一定是一维 NumPy 数组n m沿其最后一个轴的元素 我希望沿着它的最后一个轴 分割 这个数组 以便我将每个n 第一个元素从0直到 为止n 明确地让a有形状 k n m 然后我想构造形状数组 n k m np arra
  • 如何在发送前更改响应

    是否可以拦截向客户端发送的响应 并在最终发送修改后的响应 我想从基本身份验证响应中删除 WWW Authenticate 标头 或者在错误的身份验证情况下将错误代码从 401 更改为 403 附 我也有同样的问题 http www java
  • 将更改分发到多个分支的 Git 工作流程

    我有一个 Git 存储库 其中有两个严重分歧的分支 A 和 B A是开源软件的上游分支 B 是我们对其所做的所有更改 从 A 的早期提交作为起点 我们想要的是 如上A B 拥有我们希望上游开发人员可以使用的所有更改 C 包含仅适用于我们对软
  • SurfaceView 上的 Android 相机纵向显示

    我尝试了几种方法来尝试让相机预览以纵向方式显示在SurfaceView 什么都没起作用 我正在使用 2 0 1 的 Droid 进行测试 我试过 1 通过以下方式强制布局为纵向 this setRequestedOrientation Ac
  • 使用 OkHttp 分析 http 请求

    如何使用 OkHttp 跟踪详细的请求时间 我想得到 连接时间 发送时间 接收时间 我尝试使用拦截器机制 但它只提供总请求时间 class LoggingInterceptor implements Interceptor Override
  • localhost 和 127.0.0.1 不一样吗?

    我有一个在两个进程之间传递数据的套接字应用程序 它在多台计算机上运行良好 并且两个进程在同一台计算机上运行 我办公室的一个人访问了一个政府办公室 他们对她的笔记本电脑进行了一些未知的更改 以便她可以访问他们的网络 当她离开后 该应用程序不再
  • 是否可以替换 Android 中默认的“强制关闭”对话框?

    我希望我的 Android 应用程序的用户可以选择通过电子邮件向我发送导致我的应用程序崩溃的任何未捕获异常的堆栈跟踪 最初 我以为我只需将应用程序的每个入口点包装在 try catch 块中 但即使在我的小应用程序中 也有太多这样的入口点
  • 由于 VACUUM 查询,Amazon Redshift 磁盘使用率为 100%

    阅读 Amazon Redshift 文档后 我在某个 400GB 表上运行了 VACUUM 该表以前从未被清理过 以尝试提高查询性能 不幸的是 VACUUM 导致表增长到 1 7TB 并使 Redshift 的磁盘使用率达到 100 然后
  • Rails:不同控制器的形式

    我正在开发一个带有登陆页面的 Rails 应用程序 在登陆页面上 用户可以注册该应用程序 对于登录 有一个带有额外控制器的额外视图 它看起来像这样 views landinpage index html gt sign up form vi
  • 在 TensorFlow CTC(语言模型)中使用自定义 Beam 评分器

    是否可以从 Python 端在 TensorFlow CTC 实现中自定义 Beam Scorer 我在 CTCBeamSearchDecoder C 类构造函数的评论中看到了这种可能性 但想知道如何为 Python 用户提供此功能 我们遇