python - 如何根据张量流中的条件设置每个单独的矩阵值
问题描述
在 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]]
解决方案
tf.where 是我正在寻找的解决方案。
推荐阅读
- android-things - Rainbow HAT 上的 SPI 引脚真的有效吗?
- docker - How to link frontend and backend docker containers
- django - Django - postgres: how can I verify whether the database connection is SSL?
- firebase - Error:Failed to resolve: common in android studio
- javascript - 自动获取id
- python - Module installed in virtual environment, yet my program raises a ModuleNotFoundError
- html - How to dynamically add meta tag using XSLT
- ruby-on-rails - 构建多态关联 Rails
- wordpress - 又一个 Wordpress 退出问题
- java - How this recursive call gets executed?