[英]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.