我有一个形状为t
的TensorFlow张量(d,d)
,一个方阵。我定义了跟踪张量tr = tf.trace(t)
。现在使用tr
评估session.run(tr)
:TensorFlow是否足够智能,只评估t
的对角元素,或者首先评估t
的所有元素,然后才跟踪计算?
答案 0 :(得分:1)
TensorFlow将首先计算矩阵,然后运行trace op来提取/求和对角线。如果没有其他操作消耗完整矩阵(不确定它当前是否存在),XLA可能会优化掉,但TensorFlow本身会将这些操作视为或多或少的黑盒子。
如果没有完整矩阵的消费者,可能只是对代表该对角线的矢量进行计算?您还可以使用sparse tensors来避免不必要的计算,同时跟踪索引。