首先查看今天要分析的代码:
乍一看,此代码非常可怕。实际上,经过分析后,您会突然感到开朗。实际上,韦内特的守则真的很棒,而且很容易理解(您必须仔细观察才能理解它。真的很难看到,坚持,结束了!)
(假定以下所有变量维度。为了促进读者了解,实际操作不一定是值。在本文之后,我不会详细介绍)
首先查看传递参数,一个是x,另一个是目标。这是众所周知的,即编码器的输出和最终标签!x是编码器的输出之间的差异。尺寸为[16,13,4233],其中16是批处理大小。13是解码帧的序列长度。长度不同,因此该值不固定,13是当前批次中最长的值。当前批次的长期休假为[11,13,12,9,5,2,3,11,12,12,7,6,7]。对于少于13的部分,填充补体1图是语音的示例图。当然,X是16个这样的大两个维矢量。这是示例中的序列长度为13。图中黄色两个维矢量的尺寸为[13,4233]
目标是标签矢量,尺寸为[16,13],其中保留了相应词典的索引。
让我们开始查看下面的详细代码:
在此步骤中,true_dist是全部0,与x相同的纬度
完成的编码设置为对应标签的1个,所有其他位置均设置为0。如上所述,我们在此处使用标签平滑。$,smoolhing为0.1,size-1 =4232。说什么是标签平滑,因为wenet注释写得太好了,我将直接复制:
这里填充的值是$ frac {0.1} {4232} = 2.36e-5 $。