mindspore.ops.RNNTLoss
- class mindspore.ops.RNNTLoss(blank_label=0)[源代码]
计算相对于softmax输出的RNNTLoss及其梯度。
- 参数:
blank_label (int) - 空白标签。默认值:
0
。
- 输入:
acts (Tensor) - Tensor,shape为 \((B, T, U, V)\) 。其中 \(B\) 为batch维, \(T\) 为输入序列长度, \(U\) 为目标序列长度, \(V\) 为输出维。数据类型必须为float16或float32。
labels (Tensor) - Tensor,shape为 \((B, U-1)\) 。数据类型为int32。
input_lengths (Tensor) - Tensor,shape为 \((B,)\) 。数据类型为int32。
label_lengths (Tensor) - Tensor,shape为 \((B,)\) 。数据类型为int32。
- 输出:
costs (Tensor) - Tensor,shape为 \((B,)\) 。数据类型为int32。
grads (Tensor) - 具有与 acts 相同的shape和dtype。
- 异常:
TypeError - 如果 acts 、 labels 、 input_lengths 或 label_lengths 不是Tensor。
TypeError - 如果 acts 的dtype既不是float16也不是float32。
TypeError - 如果 labels、 input_lengths 或 label_lengths 的dtype不是int32。
- 支持平台:
Ascend
样例:
>>> import numpy as np >>> from mindspore import ops, Tensor >>> B, T, U, V = 1, 2, 3, 5 >>> blank = 0 >>> acts = np.random.random((B, T, U, V)).astype(np.float32) >>> labels = np.array([[1, 2]]).astype(np.int32) >>> input_length = np.array([T] * B).astype(np.int32) >>> label_length = np.array([len(l) for l in labels]).astype(np.int32) >>> rnnt_loss = ops.RNNTLoss(blank_label=0) >>> costs, grads = rnnt_loss(Tensor(acts), Tensor(labels), Tensor(input_length), Tensor(label_length)) >>> print(costs.shape) (1,) >>> print(grads.shape) (1, 2, 3, 5)