Python 是否有一种有效的方法将不同的函数应用于数组的每个元素?
我的部分代码涉及对张量的每个元素应用不同的函数。具体来说,假设我有:Python 是否有一种有效的方法将不同的函数应用于数组的每个元素?,python,tensorflow,Python,Tensorflow,我的部分代码涉及对张量的每个元素应用不同的函数。具体来说,假设我有: f=[f1,f2,…,fn] 及 X=[X1,X2,…,Xn] 这里,f的每个元素都是一个函数,它接受一个张量并生成另一个张量,X的每个元素都是一个张量 我想做的是计算: y=[f1(X1),f2(X2),…,fn(Xn)] 到目前为止,我一直在使用zip,即: y=[cur\u f(cur\u x)表示cur\u f,cur\u x在zip中(f,x)] 这工作得很好,但效率不高,因为虽然每个操作可以并行运行,但它将按顺序运
f=[f1,f2,…,fn]
及
X=[X1,X2,…,Xn]
这里,f
的每个元素都是一个函数,它接受一个张量并生成另一个张量,X
的每个元素都是一个张量
我想做的是计算:
y=[f1(X1),f2(X2),…,fn(Xn)]
到目前为止,我一直在使用zip
,即:
y=[cur\u f(cur\u x)表示cur\u f,cur\u x在zip中(f,x)]
这工作得很好,但效率不高,因为虽然每个操作可以并行运行,但它将按顺序运行。更糟糕的是,我不能在这个问题上使用tf.function
,因为我在一个张量上迭代,我不认为我可以使用tf.map\fn
,因为我在f
的情况下循环函数
有没有一个好的、快速的方法可以做到这一点,或者zip方式是唯一的方法?如果您执行
def apply(p):p[0](p[1])
则问题会简化为map(apply,zip(f,x))
。这足以并行完成吗?@kaya3,我不认为这是并行完成的。内置的map
没有,但我的意思是它变成了一个常规的map,其中相同的函数apply
应用于序列zip(f,x)
的每个元素。因此,如果您有一种并行处理映射的方法,那么只要您能够向它传递函数(而不仅仅是数据),它就应该可以工作。我自己不使用tensorflow,所以我不知道tf.map\u fn
是否允许这样做。您可以使用pythons线程模块。对于这种任务来说,它可能有点过于强大了