还是不确定我是否理解你的问题。如果我理解正确,你的挑战来自
xn
. 我有下面的方法来“展开”批次索引。结果是一个大小为batch\u size的数组;数组中的每个元素都是张量。当然,在评估之前,可以对所有这些张量执行其他操作。
我必须使用
tf.scan
对每个元素执行操作
xn[i]
因为它的第一维度是动态的。不过,可能存在更好的解决方案。
x1 = np.array([[1, 2, 3]])
xn = np.array([[[1, 5, 2], [7, 2, 8], [3, 2, 5]]])
batch_size = x1.shape[0]
result = []
for batch_idx in range(batch_size):
x1_i = x1[batch_idx]
xn_i = xn[batch_idx]
result.append(tf.scan(fn=lambda a, x: x * x1_i, elems=xn_i, initializer=x1_i))
with tf.Session() as sess:
print sess.run([result[0]])
# result, this is x1[0] multiply each element in xn[0] for all i (element-wise).
# free free to plug in your own matrix operations in the `fn` arg of `tf.scan`.
[array([[ 1, 10, 6],
[ 7, 4, 24],
[ 3, 4, 15]])]