首页 > 解决方案 > 如何根据张量流中的条件设置每个单独的矩阵值

问题描述

在 Tensorflow 中,我想创建一个矩阵,其值取决于其他两个矩阵之间的元素比较。例如:

我希望 C 在 A > B 时具有值 1,否则为 0:

我通过利用 tf.math.divide_no_nan 的行为并使用一些数学找到了解决方案:

(condition / condition) * result_if_true + (1 - condition / condition) * result_if_false

这在张量流中转化为:

tf.math.add(tf.math.multiply(tf.math.divide_no_nan(condition, condition), result_if_true), tf.math.multiply(tf.math.subtract(tf.constant(1, tf.float32, matrix_shape), tf.math.divide_no_nan(condition, condition)), result_if_false))

但这似乎太令人费解了,我确信必须有一种适当的方法来解决这个问题。我试过使用 tf.cond 但它对我不起作用,因为我需要逐个元素地评估条件。

以下是我在问题开始时提出的示例之后想要完成的任务:

A = tf.convert_to_tensor([[1.0, 2.0], [4.0, 5.0]])
B = tf.convert_to_tensor([[3.0, 3.0], [3.0, 3.0]])
C = #Solution goes here
print(C.run())

结果:

[[0,0],
[1,1]]

标签: pythontensorflow

解决方案


tf.where 是我正在寻找的解决方案。


推荐阅读