Tensorflow Einsum vs.Matmul vs.Tensordot

En tensorflow, las funcionestf.einsum, tf.matmulytf.tensordot Todos pueden ser utilizados para las mismas tareas. (Me di cuenta quetf.einsum ytf.tensordot tener definiciones más generales; También me doy cuenta de quetf.matmul tiene funcionalidad por lotes.) En una situación en la que cualquiera de los tres podría usarse, ¿una función tiende a ser más rápida? ¿Hay otras reglas de recomendación?

Por ejemplo, supongamos queA es un tensor de rango 2 yb es tensor de rango 1, y desea calcular el productoc_j = A_ij b_j. De las tres opciones:

c = tf.einsum('ij,j->i', A, b)

c = tf.matmul(A, tf.expand_dims(b,1))

c = tf.tensordot(A, b, 1)

¿Es generalmente preferible alguno a los demás?

Respuestas a la pregunta(1)

Su respuesta a la pregunta