Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我如何断言张量是一个由0到N`True`s,然后是0到N`False`s组成的序列?_Python_Tensorflow_Tensorflow2.x - Fatal编程技术网

Python 我如何断言张量是一个由0到N`True`s,然后是0到N`False`s组成的序列?

Python 我如何断言张量是一个由0到N`True`s,然后是0到N`False`s组成的序列?,python,tensorflow,tensorflow2.x,Python,Tensorflow,Tensorflow2.x,如何断言张量如下所示(例如): 但拒绝这样的输入: [ True, False, True, False, False, True, False ] [ False, False, False, False, True ] 或者更一般地说:我想测试一个张量是否只由0到N个真值,然后是0到N个假值组成的序列。如何使用Tensorflow 2实现这一点?这是实现这一点的一种方法: 将tensorflow导入为tf def有效(a): #假设a是一维布尔数组 a=tf。将_转换为_张量(a) #转换

如何断言张量如下所示(例如):

但拒绝这样的输入:

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

或者更一般地说:我想测试一个张量是否只由0到N个真值,然后是0到N个假值组成的序列。如何使用Tensorflow 2实现这一点?

这是实现这一点的一种方法:

将tensorflow导入为tf
def有效(a):
#假设a是一维布尔数组
a=tf。将_转换为_张量(a)
#转换为整数
a_int=tf.dtypes.cast(a,tf.int32)
#以两两差异为例
diff=a_int[1:]-a_int[:-1]
#检查所有差异是否为零或负(无从False到True的转换)

返回tf.reduce_all(diff另一种方法,研究元素的指数:

import tensorflow as tf

def is_valid(t):
  where_false = tf.where(~t)
  return len(where_false) == 0 or all( idx_true < min(where_false) for idx_true in tf.where(t))

assert is_valid(tf.constant([ True, True ]))
assert is_valid(tf.constant([ True, True, True, False, False, False, False ]))
assert is_valid(tf.constant([ True, True, True, False, False ]))
assert is_valid(tf.constant([ True, False, False, False, False ]))
assert is_valid(tf.constant([ False, False ]))
assert not is_valid(tf.constant([ True, False, True, False, False, True, False ]))
assert not is_valid(tf.constant([ False, False, False, False, True ]))
将tensorflow导入为tf
def有效(t):
where_false=tf.where(~t)
返回len(其中_false)==0或全部(对于tf中的idx_true,idx_true
其思想是,所有的真值都应该出现在第一个假值之前,如果有的话

import tensorflow as tf

def is_valid(t):
  where_false = tf.where(~t)
  return len(where_false) == 0 or all( idx_true < min(where_false) for idx_true in tf.where(t))

assert is_valid(tf.constant([ True, True ]))
assert is_valid(tf.constant([ True, True, True, False, False, False, False ]))
assert is_valid(tf.constant([ True, True, True, False, False ]))
assert is_valid(tf.constant([ True, False, False, False, False ]))
assert is_valid(tf.constant([ False, False ]))
assert not is_valid(tf.constant([ True, False, True, False, False, True, False ]))
assert not is_valid(tf.constant([ False, False, False, False, True ]))