在 tensorflow 中,函数tf.einsum
、tf.matmul
和tf.tensordot
都可以用于相同的任务。(我意识到这一点tf.einsum
并且tf.tensordot
有更一般的定义;我也意识到它tf.matmul
具有批处理功能。)在可以使用这三个中的任何一个的情况下,一个函数往往是最快的吗?还有其他推荐规则吗?
例如,假设A
是一个 rank-2 张量,并且b
是 rank-1 张量,并且您想要计算 product 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)
任何一般都比其他人更可取吗?