Convert einsum computation to dot product to be used in Theano

后端 未结 1 1939
误落风尘
误落风尘 2021-01-13 17:43

I have just recently learned about np.einsum and quickly became addicted to it. But it seems that theano doesn\'t have an equivalent function so I

相关标签:
1条回答
  • 2021-01-13 18:03

    You only need to rearrange your axes to get this to work:

    >>> import numpy as np
    >>> a = np.random.rand(3, 4, 5)
    >>> b = np.random.rand(5, 6)
    >>> np.allclose(np.einsum('ikj,jl->ikl', a, b), np.dot(a, b))
    

    So with that in mind:

    >>> a = np.random.rand(3, 5, 4)
    >>> b = np.random.rand(6, 5)
    >>> out_ein = np.einsum('ijk,lj->ilk', a, b)
    >>> out_dot = np.transpose(np.dot(np.transpose(a, (0, 2, 1)),
    ...                               np.transpose(b, (1, 0))),
    ...                        (0, 2, 1))
    >>> np.allclose(out_ein, out_dot)
    
    0 讨论(0)
提交回复
热议问题