in src/exporters/coreml/models.py [0:0]
def patch_pytorch_ops(self):
# coremltools does support einsum but not the equation "bhlt,bhtv->bhlv"
# so override the implementation of this operation
def einsum(context, node):
from coremltools.converters.mil import Builder as mb
from coremltools.converters.mil.frontend._utils import build_einsum_mil
a = context[node.inputs[1]][0]
b = context[node.inputs[1]][1]
equation = context[node.inputs[0]].val
if equation == "bhlt,bhtv->bhlv":
x = mb.matmul(x=a, y=b, transpose_x=False, transpose_y=False, name=node.name)
else:
x = build_einsum_mil(a, b, equation, node.name)
context.add(x)
return {"einsum": einsum}