接口功能:MhcSinkhornBackward是MhcSinkhorn的反向算子。mHC(Manifold-Constrained Hyper-Connections)架构中的MhcSinkhorn算子对输入矩阵做sinkhorn变换得到双随机矩阵,输出的双随机矩阵的所有元素≥0、每一行之和为1且每一列之和为1 (具有范数保持、组合封闭性和凸组合几何解释三大特性)。对mHC架构中双随机矩阵矩阵的梯度进行sinkhorn变换的反向计算得到输入的梯度。
计算公式
Sinkhorn-Knopp算法在正向计算中通过 次迭代归一化实现双随机投影,在反向传播的迭代计算中:
前 次迭代:
- 最后一次迭代:
- 其中: 为初始梯度, 为输出梯度,为第次归一化方向向量, 为对应的缩放系数。
每个算子分为,必须先调用“aclnnMhcSinkhornBackwardGetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclnnMhcSinkhornBackward”接口执行计算。
[object Object]
[object Object]
确定性计算:
aclnnMhcSinkhornBackward默认确定性实现。
规格约束:
- num_iters:取值范围1~100,超出则报参数无效。
- n:输入矩阵最后两维尺寸,仅支持4、6或8。
- align_n:固定为8,是n按FP32 块大小32 字节对齐后的值。
- 维度数:输入gradOutput仅支持3 维(T,n,n)或4 维(B,S,n,n)。
[object Object]