Python Tensorflow:将不同的函数映射到tf阵列的不同轴?
我不熟悉tensorflow 1.14,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
假设我有一个
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)