Tensorflow Einsum vs.Matmul vs.Tensordot
En tensorflow, las funcionestf.einsum
, tf.matmul
ytf.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?