mindsponge.cell.TriangleMultiplication

class mindsponge.cell.TriangleMultiplication(num_intermediate_channel, equation, layer_norm_dim, batch_size=None)[源代码]

三角乘法层。详细实现过程参考 TriangleMultiplication 。 氨基酸对ij之间的信息通过ij,ik,jk三条边的信息整合,将ik和jk的点乘结果信息添加到ij边。

参数:
  • num_intermediate_channel (float) - 中间通道的数量。

  • equation (str) - 三角形边顺序的爱因斯坦算符表示,分别对应于”incoming”和”outgoing”的边更新形式。 \((ikc,jkc->ijc, kjc,kic->ijc)\)

  • layer_norm_dim (int) - 归一层的最后一维的长度。

  • batch_size (int) - 三角乘法中的batch size。默认值:”None”。

输入:
  • pair_act (Tensor) - pair_act。氨基酸对之间的信息,shape为 \((N_{res}, N_{res}, layer\_norm\_dim)\)

  • pair_mask (Tensor) - 三角乘法层矩阵的mask。shape为 \((N_{res}, N_{res})\)

  • index (Tensor) - 在循环中的索引,只会在有控制流的时候使用。

输出:

Tensor。三角乘法层中的pair_act。shape为 \((N_{res}, N_{res}, layer\_norm\_dim)\)

支持平台:

Ascend GPU

样例:

>>> import numpy as np
>>> from mindsponge.cell import TriangleMultiplication
>>> from mindspore import dtype as mstype
>>> from mindspore import Tensor
>>> model = TriangleMultiplication(num_intermediate_channel=64,
...                                equation="ikc,jkc->ijc", layer_norm_dim=64, batch_size=0)
>>> input_0 = Tensor(np.ones((256, 256, 64)), mstype.float32)
>>> input_1 = Tensor(np.ones((256, 256)), mstype.float32)
>>> out = model(input_0, input_1, index=0)
>>> print(out.shape)
(256, 256, 64)