主要内容

ctc

无序序列分类中的连接主义时间分类(CTC)损失

    描述

    CTC操作计算未对齐序列之间的连接主义时间分类(CTC)损失。

    ctc函数计算预测和目标之间的CTC损失,表示为dlarray数据。使用dlarray对象允许您标记维度,从而更容易处理高维数据。属性标记哪些维度对应于空间、时间、通道和批处理维度“S”“T”“C”,“B”标签,分别。对于未指定的维度和其他维度,使用“U”标签。为dlarray对象的函数在特定维度上操作时,可以通过格式化dlarray对象,或者使用DataFormat选择。

    例子

    损失= ctc (Y目标YMasktargetsMask返回格式之间的CTC损失dlarray对象Y包含预测和目标值目标使用预测和目标掩码YMask而且targetsMask,分别。

    对于未格式化的输入数据,使用“DataFormat”选择。

    损失= ctc (Y目标YMasktargetsMask、“DataFormat”FMT)还指定维度格式FMTY不是格式化的dlarray

    损失= ctc (___名称,值除以前语法中的输入参数外,还使用一个或多个名称-值对参数指定选项。例如,“BlankIndex”、“最后”指定与词汇表的最后一个元素对应的空白索引。

    例子

    全部折叠

    在10个类上创建2个不同长度的目标序列的数组。目标序列不能包含空索引,默认值为1。

    numObservations = 2;numClasses = 10;target = cell(numObservations,1);目标{1}= [2 3 5 7 9 2 3 3 3 2 3 3 3 3 3 3];目标{2}= [2 3 3 3 4 4 4 6 8 8 8 10 3];

    创建预测序列的随机数组。预测序列的长度必须大于或等于对应目标序列的长度加上重复索引的个数。在这种情况下,第一个序列的长度为11,没有重复索引,第二个序列的长度为13,有6个重复索引。

    Y = cell(numObservations,1);Y{1} = rand(numClasses,11);Y{2} = rand(numClasses,13 + 6);

    查看预测和目标的单元格阵列

    Y
    Y =2×1单元格数组{10×11 double} {10×19 double}
    目标
    目标=2×1单元格数组{[2 3 5 7 9 2 3 5 3 2 3 3 3]} {[2 3 3 3 4 4 4 6 8 8 8 10 3]}

    将预测序列和目标序列填充在二维中padsequences函数,并返回相应的掩码。

    [Y,YMask] = padsequences(Y,2);

    填充目标使用padsequences函数。目标必须是1和类数量之间的正整数,并且不能包含空白索引,因此指定填充值为2。

    [targets,targetsMask] = padsequences(targets,2,“PaddingValue”2);

    ctc函数需要将目标和目标掩码指定为2-D数组,则使用挤压函数。

    目标=挤压(目标);targetsMask = squeeze(targetsMask);

    将填充的预测序列和掩码转换为dlarray带格式的“施”(通道,时间,批次)。因为格式化dlarray对象自动排序维度,保持目标的维度和掩码一致,同时将它们转换为格式化的dlarray具有相同格式的对象。

    ly = darray (Y,“施”);掩码= dlarray(掩码,“施”);

    类似地,将填充的目标序列和蒙版转换为dlarray带格式的“结核”(时间、批次)。

    目标= dlarray(目标,“结核”);targetsMask = darray (targetsMask,“结核”);

    计算预测和目标之间的CTC损失ctc函数。

    loss = ctc(dlY,targets,YMask,targetsMask)
    损失= 1×1 dlarray 12.1568

    输入参数

    全部折叠

    预测,指定为格式化的dlarray,一个未格式化的dlarray,或数值数组。当Y不是格式化的dlarray时,必须使用“DataFormat”选择。

    预测Y必须有一个“B”(批处理),“C”(频道),“T”(时间)维度,可以有不同的序列长度到相应的目标中目标

    如果Y是数字数组吗目标YMask,或targetsMask一定是dlarray

    目标序列,指定为格式化或非格式化dlarray或者一个数字数组。

    将目标指定为一个数组,其尺寸与观测值和目标序列的时间步长相对应。例如,指定目标为格式化的dlarray具有格式的对象英国电信的(批量、时间)。

    目标必须具有与预测相同数量的观测数据。掩码值为1所对应的目标值必须为1与的通道数之间的正整数Y并且不能包含空白索引。

    如果目标是格式化的dlarray,则其格式必须与的格式一致Y,或与DataFormat如果Y未格式化。

    如果目标是未格式化的dlarray或数值数组,则函数应用的格式Y或者是DataFormat目标

    提示

    格式化dlarray对象自动排列底层数据的维度以使其具有顺序“S”(空间),“C”(通道),“B”(批处理),“T”(时间),然后“U”(不明)。保证尺寸Y而且目标一致,当Y是格式化的dlarray,也指定目标作为格式化的dlarray

    掩码,指示要包括哪些预测元素用于损失计算,指定为dlarray对象、逻辑数组或具有相同大小的数值数组Y

    当掩码中的对应值分别为1和0时,该函数包含和排除用于损失计算的预测元素。

    对于掩码中的每个时间步和观测值,信道维度中对应的元素必须为全1或全0。

    提示

    格式化dlarray对象会自动排列底层数据的维数,使其排列顺序如下:“S”(空间),“C”(通道),“B”(批处理),“T”(时间)“U”(不明)。例如,dlarray对象根据格式自动排列数据的维度“TSCSBS”要有格式“SSSCBT”

    保证尺寸Y和面具是一致的,当Y是格式化的dlarray,也指定掩码为格式化的dlarray

    掩码,指示要包括哪些目标元素进行损失计算,指定为dlarray对象、逻辑数组或具有相同大小的数值数组目标

    当掩码中对应的值分别为1和0时,该函数包含和排除用于损失计算的目标元素。

    提示

    格式化dlarray对象会自动排列底层数据的维数,使其排列顺序如下:“S”(空间),“C”(通道),“B”(批处理),“T”(时间)“U”(不明)。例如,dlarray对象根据格式自动排列数据的维度“TSCSBS”要有格式“SSSCBT”

    保证尺寸Y和面具是一致的,当Y是格式化的dlarray,也指定掩码为格式化的dlarray

    名称-值参数

    指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。

    在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字在报价。

    例子:“BlankIndex”、“最后”指定与词汇表的最后一个元素对应的空白索引

    空白字符的索引,指定为逗号分隔的对,由“BlankIndex”和以下其中之一:

    • 正整数—使用词汇表中具有指定索引的元素作为空白字符。如果“BlankIndex”是整数,那么它必须在1和通道数之间Y包容性。

    • “最后一次”-使用词汇表的最后一个元素作为空白字符。

    数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|字符|字符串

    未格式化输入数据的维度顺序,指定为字符向量或字符串标量FMT它为数据的每个维度提供了一个标签。

    的格式时dlarray对象,每个字符为数据的每个维度提供一个标签,并且必须是以下之一:

    • “S”——空间

    • “C”——频道

    • “B”-批次(例如,样品和观察)

    • “T”-时间(例如序列的时间步长)

    • “U”——未指明的

    您可以指定多个有标记的维度“S”“U”.你可以使用标签“C”“B”,“T”最多一次。

    您必须指定DataFormat当输入数据未被格式化时dlarray

    数据类型:字符|字符串

    输出参数

    全部折叠

    CTC丢失,以未格式化的形式返回dlarray具有与输入相同的底层数据类型的标量Y

    扩展功能

    版本历史

    R2021a中引入