Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否有一种有效的方法将不同的函数应用于数组的每个元素?_Python_Tensorflow - Fatal编程技术网

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线程模块。对于这种任务来说,它可能有点过于强大了