首页 > 解决方案 > 图优化后,矩阵乘法之前的转置是否会自动融合?

问题描述

张量流中的tf.matmul矩阵乘法具有参数transpose_a,并且transpose_b可以在矩阵乘法之前选择性地转置其参数中的一个(或两个)。这样做让操作员有可能实际上不转置输入(这可能很昂贵),而只是简单地计算结果。

另一方面,tensorflow 有一个复杂的图优化算法,它在每个节点上运行,Session.run并查看可以在图中优化的算子。

我的问题是,在矩阵乘法被张量流自动优化之前是否发生了矩阵转置?还是我们仍然应该注意不要过度使用@运算符并在需要时使用完整的参数tf.matmul

换句话说,即使例如图

tf.matmul(a, b, transpose_a=True)

tf.matrix_transpose(a) @ b

不同的是,在图形优化后运行时,第二个最终会转化为第一个吗?

标签: pythontensorflow

解决方案


对计算时间做一个小的分析,似乎矩阵乘法和转置在图优化期间没有(还没有?)融合。在这种情况下,依赖tf.matmul并设置适当的标志仍然是要做的事情。

在此处输入图像描述

(在下图中,baseline是标准矩阵乘法tf.matmul(a, b)matmul_ttf.matmul(a, b, transpose_a=True)@_ttf.matrix_transpose(a) @ b


推荐阅读