我的代码的一部分涉及将不同的函数应用于张量的每个元素。具体来说,请说我有
f = [f1, f2, ..., fn]
和
X = [X1, X2, ..., Xn]
在这里,f
的每个元素都是一个吸收张量并产生另一个张量的函数,而X
的每个元素都是一个张量。
我想做的是计算:
y = [f1(X1), f2(X2), ..., fn(Xn)]
到目前为止,我这样做的方法是使用zip
,即:
y = [cur_f(cur_x) for cur_f, cur_x in zip(f, X)]
这很好用,但是效率不是很高,因为虽然每个操作可以并行运行,但会顺序运行。更糟糕的是,我无法在此使用tf.function
,因为我正在遍历张量,并且我认为我无法使用tf.map_fn
,因为在{{1}的情况下,我正在遍历函数}。
是否有一种不错的,快速的方法,还是只有zip方式?