PyTorch深度学习实战(24)—— 爱因斯坦操作einsum 和 einops

 

在高级索引中还有一类特殊方法:爱因斯坦操作。下面介绍两种常用的爱因斯坦操作:einsum和einops,它们被广泛地用于向量、矩阵和张量的运算。灵活运用爱因斯坦操作可以用非常简单的方式表示较为复杂的多维Tensor之间的运算。

1.einsum

在数学界中,有一个由爱因斯坦提出来的求和约定,该约定能够有效处理坐标方程。爱因斯坦求和(einsum)就是基于这个法则,省略求和符号和默认成对出现的下标,从而完成对向量、矩阵和张量的运算,下面举例说明:

In: # 转置操作
    import torch as t
    a = t.arange(9).view(3, 3)
    b = t.einsum('ij->ji', a) # 直接交换两个维度
    print(a)
    print(b)Out:tensor([[0, 1, 2],
            [3, 4, 5],
            [6, 7, 8]])
    tensor([[0, 3, 6],
            [1, 4, 7],
            [2, 5,

你可能感兴趣的:(PyTorch深度学习实战,深度学习,pytorch,人工智能,神经网络)