gpt4 book ai didi

python - 使用 bool 掩码从两个较小的张量创建 TensorFlow 张量

转载 作者:行者123 更新时间:2023-12-05 05:42:21 27 4
gpt4 key购买 nike

我正在使用 TensorFlow 并想创建一维张量 t1来自两个较小的张量 t2t3 , 其中len(t2) + len(t3) == len(t1)和一个 bool 掩码,指示如何 t2t3应该合并。 bool 掩码指示如何将两个较小的张量“拼接”在一起。

为了说明我的意思——在 numpy 中,这相当简单:

mask = np.array([True, True, False, False, True])

a2 = [1., 2., 3.]
a3 = [4., 5.]

a1 = np.zeros(5)
a1[mask] = a2 # use mask to splice smaller arrays together
a1[~mask] = a3

a1 # array([1., 2., 4., 5., 3.])

我环顾四周,似乎找不到任何适用于 TensorFlow 的等效代码。 tf.where似乎要求所有参数都具有相同的大小,这在我的用例中是不可能的。有没有一种简单且效率适中的方法来做到这一点?

最佳答案

也许尝试使用 tf.tensor_scatter_nd_update:

import tensorflow as tf

mask = tf.constant([True, True, False, False, True])

a2 = tf.constant([1., 2., 3.])
a3 = tf.constant([4., 5.])
a1 = tf.tensor_scatter_nd_update(tf.zeros((5,)), tf.concat([tf.where(mask),tf.where(~mask)], axis=0), tf.concat([a2, a3], axis=0))
print(a1)
# tf.Tensor([1. 2. 4. 5. 3.], shape=(5,), dtype=float32)

简单解释:

enter image description here

关于python - 使用 bool 掩码从两个较小的张量创建 TensorFlow 张量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72054476/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com