当前位置: 首页 > 面试题库 >

tensorflow einsum vs.matmul vs.tensordot

孟自强
2023-03-14
问题内容

在tensorflow中,函数tf.einsumtf.matmultf.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)

一般比其他任何人都好吗?


问题答案:

这两个tf.tensordot()tf.einsum()是语法糖那套一个或更多的调用tf.matmul()(虽然在一些特殊情况下tf.einsum()可以降低到简单的按元素tf.multiply())。

在极限情况下,我希望所有三个函数在同一计算中都具有相同的性能。但是,对于较小的矩阵,tf.matmul()直接使用可能会更有效,因为它会产生带有较少操作的更简单的TensorFlow图,因此每操作调用的成本会更低。



 类似资料:

相关阅读

相关文章

相关问答