TensorFlow 2.9.1中按条件创建新Tensor E的最优方法咨询
TensorFlow 2.9.1 条件生成张量E的最优实现
你写的代码存在逻辑问题:第一次赋值E = C[A <= B]只是提取了C中满足A<=B的元素,得到的是长度不确定的张量;第二次赋值直接将E替换为D中满足A>B的元素,最终E仅保留了D的部分元素,完全不符合需求。
使用tf.where()是最优解法,它能根据布尔条件张量,从两个输入张量的对应位置选取元素,完美匹配你的需求:
# 直接将条件表达式作为第一个参数,写法更简洁 E = tf.where(A <= B, C, D)
如果需要显式定义条件张量,也可以这样写:
condition = tf.less_equal(A, B) # 生成与A同形状的布尔张量 E = tf.where(condition, C, D)
生成的E会和A、B、C、D保持相同的(5,)形状,每个位置的值会根据A<=B的判断结果,对应取C或D的元素。
内容的提问来源于stack exchange,提问作者raghav
相关产品推荐
相关产品推荐

