В тензорном потоке функции tf.einsum, tf.matmul и tf.tensordot могут использоваться для одних и тех же задач. (Я понимаю, что tf.einsum и tf.tensordot имеют более общие определения, я также понимаю, что tf.matmul имеет пакетную функциональность.) В ситуации, когда любой из трех может быть использован, одна функция имеет тенденцию быть самой быстрой? Существуют ли другие правила рекомендации?
Например, предположим, что A является тензором ранга-2, а b является тензором ранга-1, и вы хотите вычислить продукт c_j = A_ij b_j. Из трех вариантов:
c = tf.einsum('ij,j->i', A, b)
c = tf.matmul(A, tf.expand_dims(b,1))
c = tf.tensordot(A, b, 1)
является вообще предпочтительным для других?