В тензорном потоке функции 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)
является вообще предпочтительным для других?