簡體   English   中英

將 boolean 張量轉換為 tensorflow 中的二進制

[英]Convert boolean tensor to binary in tensorflow

我有一個 Boolean 張量,我想轉換為一個和零的二進制張量。

把它放到上下文中 - 我有以下張量

[[ True False  True]
 [False  True False]
 [ True False  True]]

我需要將其轉換為 1 和 0,這樣我就可以將元素與值張量相乘,即:

[[1.         0.64082676 0.90568966]
 [0.64082676 1.         0.37999165]
 [0.90568966 0.37999165 1.        ]]

我嘗試了這兩個功能

   masks = tf.map_fn(logical, masks, dtype=tf.float32)
   masks = tf.vectorized_map(logical, masks)

@tf.function
def logical(x):
    if tf.equal(x, True):
        return zero
    return one

但不幸的是沒有運氣。 我還嘗試直接與 Boolean 張量相乘,但這是不允許的。

那么關於如何解決這個問題的任何指導?

我想我用這個和一些魔法解決了它。 令懲罰為值張量

test = tf.where(masks, penalties * 0.0, penalties * 1.0)

對於那些真正需要問題的人:

tf.where(r, 1, 0)

其中r是您的 boolean 張量

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM