Python Tensorflow:将不同的函数映射到tf阵列的不同轴?

Python Tensorflow:将不同的函数映射到tf阵列的不同轴?,python,tensorflow,Python,Tensorflow,我不熟悉tensorflow 1.14, 假设我有一个n*dimtf数组:X\u tf 我还有dim不同数量的f(因为它们各自使用不同的a和b): def f(x,a,b): 返回x+a+b 我想进行以下映射: result=[f_0(X_tf[:,0],a_0,b_0),f_1(X_tf[:,1],a_1,b_1),…,f_n(X_tf[:,n],a_n,b_n)] 我看到它可以做类似的事情,但不同的是我需要申请每一个X\u tf,同时我也在寻找一种避免使用tf的方法。While\u lo

我不熟悉tensorflow 1.14,
假设我有一个
n*dim
tf数组:
X\u tf

我还有
dim
不同数量的
f
(因为它们各自使用不同的
a
b
):


def f(x,a,b):
返回x+a+b

我想进行以下映射:

result=[f_0(X_tf[:,0],a_0,b_0),f_1(X_tf[:,1],a_1,b_1),…,f_n(X_tf[:,n],a_n,b_n)]

我看到它可以做类似的事情,但不同的是我需要申请每一个
X\u tf
,同时我也在寻找一种避免使用
tf的方法。While\u loop
,我必须将它们保持在tf框架内

有什么提示吗?

利用在第一个轴上拆分张量,然后利用将它们连接在一起。下面是执行任务的代码示例

import tensorflow as tf
import numpy as np

tf.enable_eager_execution()

def f0(X, a, b):
    return X - a - b

def f1(X, a, b):
    return X - a + b

def f2(X, a, b):
    return X + a - b

def f3(X, a, b):
    return X + a + b

X_tf = tf.convert_to_tensor(np.random.randn(4, 10, 10))
a = tf.convert_to_tensor(np.random.randn(4, 10))
b = tf.convert_to_tensor(np.random.randn(4, 10))

X_tf_slices = tf.unstack(X_tf, axis=0)
print(len(X_tf_slices), X_tf_slices[0].shape)   # 4, (10, 10)

a_slices = tf.unstack(a, axis=0)
b_slices = tf.unstack(b, axis=0)

fn_list = [f0, f1, f2, f3]

X_tf = tf.stack([f_i(X_tf_i, a_i, b_i) for f_i, X_tf_i, a_i, b_i in
                 zip(fn_list, X_tf_slices, a_slices, b_slices)])

print(X_tf.shape)   # (4, 10, 10)