问题标签 [beam-search]
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-3.x - Tensorflow:使用 Attention 和 BeamSearch 的 seq2seq 模型中 .clone() 的问题
我正在尝试实现一个 seq2seq 模型,在 Tensorflow (1.6.0) 中使用 bidirectional_dynamic_decode、Attention 和 BeamSearchDecoder。(我试图只复制相关代码,以保持简单)
但是,当我尝试将编码器的最后状态克隆到上图中的“beam_initial_state”变量时,出现以下错误:
有人给点建议吗?提前非常感谢。
search - 基于波束搜索算法
基于波束搜索算法,图中每个节点的去概率取决于什么?我的意思是什么特征给了节点它的搜索概率?
tensorflow - tf.nn.ctc_beam_search_decoder 和 tf.contrib.seq2seq.BeamSearchDecoder 机制有什么区别?
我正在用 tensorflow 构建一个 seq2seq 模型。你能解释一下这两个波束搜索功能的细节吗?谢谢你。
tf.nn.ctc.beam_search_decoder https://www.tensorflow.org/api_docs/python/tf/nn/ctc_beam_search_decoder
tf.contrib.seq2seq.BeamSearchDecoder https://www.tensorflow.org/api_docs/python/tf/contrib/seq2seq/BeamSearchDecoder
nlp - 使用谷歌翻译访问词级预测
我正在考虑一个涉及翻译的研究项目,为此,我想使用谷歌的翻译系统。但是,我不仅需要访问输入句子的翻译,还需要使用每个时间步的概率进行波束搜索的输出,例如:
输入:“猫坐着”输出(例如西班牙语):
t=1: el: 0.8, un: 0.1, ...: 0.1
t = 2:el gato:0.9,el felino:0.05,un gato:0.001 ...
t=3...
有什么办法可以得到这个吗?我试过用 Tensor2Tensor 训练一个模型,但它比谷歌的在线翻译差得多,而且仍然很难获得增量结果。Fairseq 更好,但仍然比谷歌翻译差得多。
谢谢!
鲁本
amazon-sagemaker - 如何在 SageMaker 托管端点中实施波束搜索解码器?
我为 Seq2Seq 神经网络创建了一个 SageMaker 模型,然后启动了一个 SageMaker 端点:
此标准端点不支持光束搜索。创建支持波束搜索的 SageMaker 端点的最佳方法是什么?
monte-carlo-tree-search - 什么是神经网络中的 Monte Carlo Beam Search?
Monte Carlo Beam Search 在神经网络和强化学习研究中经常被引用。它是什么以及它与蒙特卡洛搜索有何不同。
machine-learning - Beam Search 如何对 The Transformer 的输出进行操作?
根据我的理解(如果我错了,请纠正我),Beam Search 是 BFS,它只探索最可能的选项b下的可能性“图”,其中b是光束大小。
为了计算/评分每个选项,特别是对于我正在做的 NLP 领域的工作,我们基本上通过计算令牌的概率来计算可能性的分数,给定它之前的所有内容。
这在循环架构中是有意义的,在这种架构中,您只需通过最佳b个第一个令牌运行您的解码器模型,以获得每个第一个令牌的第二个令牌的概率。最终,您会得到具有概率的序列,然后您只需选择概率最高的序列。
然而,在 Transformer 架构中,模型没有这种重复性,输出是词汇表中每个单词、序列中每个位置的整个概率(批量大小、最大序列长度、词汇大小)。我如何解释 Beam Search 的这个输出?我可以得到输入序列的编码,但是由于没有重复使用前一个输出作为下一个令牌解码的输入,我该如何计算源自最佳b的所有可能序列的概率代币?
python - 如何在 PyTorch 中检索多行的 topk 值及其各自的索引?
我有一个这样的张量:
我想获得topk
两行的值。目前我能做的是以下几点:
从输出中,您可以看到前 2 个值是从两行中检索到的。我想得到如下输出:
请注意,如果前 2 个值在第一行中,它只会从那里返回值并完全忽略第二行,反之亦然。
在这方面需要帮助。
以下是我想说的一种非常老套的方法,但它非常老套,并且显示为 BEAM_WIDTH 为 2:
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 个音素,我该如何概括这一点并找到识别的音素序列?
期待您的回答/评论!谢谢!
deep-learning - CTC语音识别中常用的前缀波束搜索可以用这种更简单的方式实现吗?
最近在学习语音识别,了解到前缀beam search的思想是把具有相同前缀的路径合并起来,比如[1,1,_]
and [_,1,_]
(可以看到,_
表示空白标记)。
基于这种理解,我实现了我的一个版本,可以使用如下伪代码进行简化:
但是我在网上找到的大多数版本(根据论文)都是这样的:
两者的结果不同,我的版本倾向于返回更长的字符串。而且我不太了解主要的两个方面:
- 我的版本有什么细节没有考虑到吗?
- 通用版本同时生成新前缀,
new_prefix = prefix + (i,)
无论前一个的结尾是否与给定的's'相同。例如,旧前缀是[a,a,b]
and,当添加新字符 s 时,都保存[a,a,b]
和[a,a,b,b]
。如果这样做有什么目的?它会导致重复计算吗?
期待您的回答,提前致谢!