简体   繁体   English

我应该如何检查张量流张量中的所有数字是否全部为二进制

[英]How should I check if all numbers in a tensorflow Tensor are all binary

How should I judge if all numbers in a tensorflow Tensor are either 0 or 1? 我该如何判断张量流张量中的所有数字是0还是1?

bad_mask = tf.Variable([[0.0,1.0,0.2,0.0,0.0], [0.0,5.0,0.0,2.3,0.0]])
good_mask = tf.Variable([[0.0,1.0,1.0,0.0,0.0], [0.0,1.0,0.0,1.0,0.0]])

I want to use tf.assert . 我想使用tf.assert

Like this code (tested): 像这样的代码(经过测试):

import tensorflow as tf

bad_mask = tf.Variable([[0.0,1.0,0.2,0.0,0.0], [0.0,5.0,0.0,2.3,0.0]])
good_mask = tf.Variable([[0.0,1.0,1.0,0.0,0.0], [0.0,1.0,0.0,1.0,0.0]])

x = tf.Assert( tf.reduce_all( 
    tf.logical_or( tf.equal( good_mask, 0.0 ), tf.equal( good_mask, 1.0 ) )
), [ good_mask ] )

y = tf.Assert( tf.reduce_all( 
    tf.logical_or( tf.equal( bad_mask, 0.0 ), tf.equal( bad_mask, 1.0 ) )
), [ bad_mask ] )

with tf.Session() as sess:
    sess.run( tf.global_variables_initializer() )
    print( sess.run ( x ) )
    print( sess.run ( y ) )

Will output: 将输出:

None 没有

and

InvalidArgumentError: assertion failed: [[0 1 0.2]...] InvalidArgumentError:断言失败:[[0 1 0.2] ...]
[[Node: Assert_4/AssertGuard/Assert = Assert[T=[DT_FLOAT], summarize=3, _device="/job:localhost/replica:0/task:0/device:CPU:0"](Assert_4/AssertGuard/Assert/Switch, Assert_4/AssertGuard/Assert/Switch_1)]] [[Node:Assert_4 / AssertGuard / Assert = Assert [T = [DT_FLOAT],summary = 3,_device =“ / job:localhost / replica:0 / task:0 / device:CPU:0”]](Assert_4 / AssertGuard /断言/切换,Assert_4 / AssertGuard /断言/ Switch_1)]]

as desired. 如预期的。

使用tf.unstack将张量转换为列表,然后检查所有值是否为0或1。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM