TensorFlow中Assert相关函数说明
本节将对 TensorFlow 中与 Assert 相关的函数进行具体的举例说明,断言给定条件的真假与条件中持有的元素.该部分的内容比较的多,涉及到的函数有:tf.Assert、tf.assert_equal、tf.assert_greater、tf.assert_less等等,一些更为深入的函数,下面会一一作出简单的介绍,在使用这些函数的时候要注意分辨各个变量的使用.
tf.Assert
Assert (
condition ,
data ,
summarize = None ,
name = None
)
定义在tensorflow/python/ops/control_flow_ops.py
请参阅指南:控制流程>调试操作
断言给定条件为真.
如果 condition 的结果为假,请打印 data 中的张量列表,summarize 用来确定要打印的张量的条目数量.
注意:为了确保断言执行,通常会附加依赖关系:
#确保X的最大元素小于或等于1个
assert_op = tf.Assert(tf.less_equal (tf.reduce_max ( X ), 1 .), [ X ] )
with tf.control_dependencies ([assert_op ] ):
...code using X ...
ARGS:
- condition:评估条件.
- data:当条件为假时打印出来的张量.
- summarize:打印每个张量的许多条目.
- name:此操作的名称(可选).
返回:
- assert_op:这个操作在执行时,提出一个 tf.errors.InvalidArgumentError 如果条件不为真.
注意应使用此函数的输出.如果不是, 则会记录一个警告.若要将输出标记为已用, 请调用其. mark_used () 方法.
tf.assert_equal
assert_equal (
x ,
y ,
data = None ,
summarize = None ,
message = None ,
name = None
)
定义在:tensorflow/python/ops/check_ops.py
参见指南:assert和布尔检查
断言条件 x == y 包含的元素.
向操作添加依赖关系的示例:
with tf.control_dependencies ([tf.assert_equal (x ,y)] ):
output = tf.reduce_sum (x)
如果对于每对(可能广播)元素 x[i],y[i] 来说该条件成立,我们有 x[i] == y[i].如果 x 和 y 都是空的,这很容易满足.
ARGS:
- x:数值张量.
- y:数值张量,相同的 dtype 类型并且可广播到 x.
- data:如果条件为假,打印出来张量.默认为错误消息和 x,y的前几个条目.
- summarize:打印每个张量的许多条目.
- message:对默认消息进行前缀操作的字符串.
- name:此操作的名称(可选),默认为 “assert_equal”.
返回:
如果 x = = y 为 False, 则引发 InvalidArgumentError 的操作.
tf.assert_greater
assert_greater (
x ,
y ,
data = None ,
summarize = None ,
message = None ,
name = None
)
定义在:tensorflow/python/ops/check_ops.py
参见指南:assert和布尔检查
断言条件 x > y 包含的元素.
向操作添加依赖关系的示例:
with tf.control_dependencies ([ tf . assert_greater (x , y)] ):
output = tf.reduce_sum (x)
如果对于每对(可能广播)元素 x[i],y[i],该条件成立的话,我们有 x[i] > y[i].如果 x 和 y 是空的,这很容易满足.
ARGS:
- x:数值张量.
- y:数值张量,相同的 dtype 并且可广播到x.
- data:如果条件为假,打印出来张量.默认为错误消息和 x,y的前几个条目.
- summarize:打印每个张量的许多条目.
- message:对默认消息进行前缀操作的字符串.
- name:此操作的名称(可选),默认为 “assert_greater”.
返回:
如果 x > y 是 False ,则引发 InvalidArgumentError 的操作.
tf.assert_greater_equal
assert_greater_equal (
x ,
y ,
data = None ,
summarize = None ,
message = None ,
name = None
)
定义在tensorflow/python/ops/check_ops.py
参见指南:assert和布尔检查
断言条件 x >= y 包含的元素.
向操作添加依赖关系的示例:
with tf.control_dependencies ([tf.assert_greater_equal ( x ,y)] ):
output = tf.reduce_sum (x)
如果对于每对(可能广播)元素 x[i],y[i],这个条件成立,则有 x[i] >= y[i].如果 x 和 y 是空的,这很容易满足.
ARGS:
- x:数值张量.
- y:数值张量,相同的 dtype 并且可广播到 x.
- data:如果条件为假,打印出来张量.默认为错误消息和 x,y 的前几个条目.
- summarize:打印每张张数的许多条目.
- message:对默认消息进行前缀操作的字符串.
- name:此操作的名称(可选),默认为 “assert_greater_equal”.
返回:
如果 x >= y 是 False ,则引起 InvalidArgumentError 的操作.
tf.assert_integer
assert_integer (
x ,
message = None ,
name = None
)
定义在:tensorflow/python/ops/check_ops.py.
参见指南:assert和布尔检查
断言 x 是整数 dtype.
向操作添加依赖关系的示例:
with tf.control_dependencies ([tf.assert_integer (x)] ):
output = tf.reduce_sum (x)
ARGS:
- x:张量的 basetype 是整数并且未被量化.
- message:对默认消息进行前缀操作的字符串.
- name:此操作的名称(可选).默认为“assert_integer”.
注意:
- TypeError:如果 x.dtype 是非量化整数的话.
返回:
返回一个 no_op,它什么也不做,类型可以被定义为静态的.
tf.assert_less
assert_less (
x ,
y ,
data = None ,
summarize = None ,
message = None ,
name = None
)
定义在:tensorflow/python/ops/check_ops.py.
参见指南:assert和布尔检查
断言条件 x < y 持有的元素.
向操作添加依赖关系的示例:
with tf.control_dependencies ([tf.assert_less (x,y)]): output= tf.reduce_sum ( x )
如果对于每对(可能广播)元素 x[i],y[i],我们有 x[i] < y[i].如果 x 和 y 都是空的,则很容易满足条件.
ARGS:
- x:数值张量.
- y:数值张量,相同的 dtype 并且可广播到 x.
- data:如果条件为 False,则打印出张量.默认为错误消息和 x,y 的前几个条目.
- summarize:打印每个张量的许多条目.
- message:对默认消息进行前缀操作的字符串.
- name:此操作的名称(可选),默认为 “assert_less”.
返回:
如果 x < y 是 False ,则引起 InvalidArgumentError 的操作.
tf.assert_less_equal
assert_less_equal (
x ,
y ,
data = None ,
summarize = None ,
message = None ,
name = None
)
定义在:tensorflow/python/ops/check_ops.py.
参见指南:assert和布尔检查
断言条件 x <= y 的持有元素.
向操作添加依赖关系的示例:
with tf.control_dependencies ([tf.assert_less_equal (x,y)] ):
output=tf.reduce_sum(x)
这种情况下,如果对于每对(可能广播)元素 x[i],y[i], 我们有 x[i] <= y[i].如果 x 和 y 都是空的,该条件很容易满足.
ARGS:
- x:数值张量.
- y:数值张量,相同的 dtype,并且可广播到 x.
- data:如果条件为 False,则打印出张量.默认为错误消息和 x,y 的前几个条目.
- summarize:打印每个张量的许多条目.
- message:对默认消息进行前缀操作的字符串.
- name:此操作的名称(可选),默认为 “assert_less_equal”.
返回:
如果 x <= y 是 False ,则引起 InvalidArgumentError 的操作.
tf.assert_negative
assert_negative (
x ,
data = None ,
summarize = None ,
message = None ,
name = None
)
定义在:tensorflow/python/ops/check_ops.py.
参见指南:assert和布尔检查
断言条件 x < 0 的持有元素.
向操作添加依赖关系的示例:
with tf.control_dependencies ([ tf.assert_negative(x)] ):
output = tf.reduce_sum(x)
Negative 的意思是对 x 的每个元素x[i] ,我们有 x[i] < 0.如果 x 是空的,该条件很容易满足.
ARGS:
- x:数值张量.
- data:如果条件为 False,则打印出张量.默认为错误消息和 x 的前几个条目.
- summarize:打印个张量的许多条目.
- message:对默认消息进行前缀操作的字符串.
- name:此操作的名称(可选).默认为 “assert_negative”.
返回:
提高 InvalidArgumentError 的操作,除非x全部为负.
tf.assert_none_equal
assert_none_equal (
x ,
y ,
data = None ,
summarize = None ,
message = None ,
name = None
)
定义在tensorflow/python/ops/check_ops.py.
断言 x != y 适用于所有元素.
向操作添加依赖关系的示例:
with tf.control_dependencies ([tf.assert_none_equal (x,y)] ):
output = tf.reduce_sum (x)
这种情况下,如果对于每对(可能广播)元素 x[i],y[i],我们有x[i] != y[i].如果 x 和 y 都是空的,该条件很容易满足.
ARGS:
- x:数字Tensor.
- y:数字Tensor,相同的dtype和可广播x.
- data:如果条件为False,张力打印出来.默认为错误消息和前几个条目x,y.
- summarize:打印每张张数的许多条目.
- message:对默认消息进行前缀操作的字符串.
- name:此操作的名称(可选).默认为“assert_none_equal”.
返回:
如果x != y永远是虚假的话,提高 InvalidArgumentError 的操作.
tf.assert_non_negative
assert_non_negative (
x ,
data = None ,
summarize = None ,
message = None ,
name = None
)
定义在tensorflow/python/ops/check_ops.py.
参见指南:assert和布尔检查
断言条件 x >= 0 的持有元素.
向操作添加依赖关系的示例:
with tf.control_dependencies ([tf.assert_non_negative (x)]):
output = tf.reduce_sum(x)
Non_negative 的意思是,对于 x 的每个元素 x[i] ,我们有 x[i] >= 0.如果 x 是空的,该条件很容易满足.
ARGS:
- x:数值张量.
- data:如果条件为 False,则打印出张量.默认为错误消息和 x 的前几个条目.
- summarize:打印每个张量的许多条目.
- message:对默认消息进行前缀操作的字符串.
- name:此操作的名称(可选).默认为 “assert_non_negative”.
返回:
提高 InvalidArgumentError 的操作,除非 x 都是是非负的.
tf.assert_non_positive
assert_non_positive (
x ,
data = None ,
summarize = None ,
message = None ,
name = None
)
定义在:tensorflow/python/ops/check_ops.py.
参见指南:assert和布尔检查
断言条件x <= 0保持元素.
向操作添加依赖关系的示例:
with tf.control_dependencies ([ tf.assert_non_positive (x)] ): output = tf.reduce_sum (x)
Non-positive的意思是,对于每个元素 x[i],我们有 x[i] =0.如果 x 是空的,该条件很容易满足.
ARGS:
- x:数值张量.
- data:如果条件为 False,则打印出张量.默认为错误消息和 x 的前几个条目.
- summarize:打印每个张量的许多条目.
- message:对默认消息进行前缀操作的字符串.
- name:此操作的名称(可选).默认为 “assert_non_positive”.
返回:
提高 InvalidArgumentError 的操作,除非 x 都是非正的.
tf.assert_positive
assert_positive (
x ,
data = None ,
summarize = None ,
message = None ,
name = None
)
定义在:tensorflow/python/ops/check_ops.py.
参见指南:assert和布尔检查
断言条件x > 0保持元素.
向操作添加依赖关系的示例:
with tf.control_dependencies ([tf.assert_positive(x)]):
output = tf.reduce_sum (x)
Positive 的意思是,对于 x 的每一个元素 x[i],我们有 x[i] > 0.如果x是空的,该条件很容易成立.
ARGS:
- x:数值张量.
- data:如果条件为 False,则打印出张量.默认为错误消息和 x 的前几个条目.
- summarize:打印每个张量的许多条目.
- message:对默认消息进行前缀操作的字符串.
- name:此操作的名称(可选).默认为 “assert_positive”.
返回:
提高 InvalidArgumentError 的操作,除非 x 都是正的.
tf.assert_proper_iterable
assert_proper_iterable (values)
定义在:tensorflow/python/ops/check_ops.py.
参见指南:assert和布尔检查
静态断言值是“适当的”迭代.
期望张量可以迭代的 Ops 可以调用它来验证输入.由于张量、ndarray、byte / text 类型都是 iterables 本身,所以是有用的.
ARGS:
- values:要检查的对象.
举:
- TypeError:如果值不是迭代或者不是 Tensor、SparseTensor、np.array、tf.compat.bytes_or_text_types 中的一个.
tf.assert_rank
assert_rank (
x ,
rank ,
data = None ,
summarize = None ,
message = None ,
name = None
)
定义在:tensorflow/python/ops/check_ops.py.
参见指南:assert和布尔检查
断言 x 的秩等于秩.
向操作添加依赖关系的示例:
with tf.control_dependencies ([ tf.assert_rank( X , 2 )] ):
output = tf.reduce_sum ( x )
ARGS:
- x:数值张量.
- rank:标量整数张量.
- data:如果条件为 False,则打印出张量.默认为错误消息和 x 的前几个条目.
- summarize:打印每个张量的许多条目.
- message:对默认消息进行前缀操作的字符串.
- name:此操作的名称(可选),默认为 “assert_rank”.
返回:
提高 InvalidArgumentError 的操作,除非 x 已经有指定的秩.如果静态检查确定 x 具有正确的秩,则返回 no_op.
注意:
- ValueError:如果静态检查确定 x 的秩错误.
tf.assert_rank_at_least
assert_rank_at_least (
x ,
rank ,
data = None ,
summarize = None ,
message = None ,
name = None
)
定义在:tensorflow/python/ops/check_ops.py.
参见指南:assert和布尔检查
断言 x 具有相等的秩或者更高的秩.
向操作添加依赖关系的示例:
with tf.control_dependencies ([tf.assert_rank_at_least(X ,2 )] ):
output = tf.reduce_sum ( x )
ARGS:
- x:数值张量.
- rank:标量张量.
- data:如果条件为 False,则打印出张量.默认为错误消息和 x 的前几个条目.
- summarize:打印每个张量的许多条目.
- message:对默认消息进行前缀操作的字符串.
- name:此操作的名称(可选).默认为 “assert_rank_at_least”.
返回:
提高 InvalidArgumentError 的操作,除非 x 已经指定秩或更高.如果静态检查确定 x 具有正确的秩,则返回 no_op.
注意:
- ValueError:如果静态检查确定 x 的秩错误.
tf.assert_same_float_dtype
tf.contrib.framework.assert_same_float_dtype
assert_same_float_dtype (
Tensors = None,
dtype = None
)
定义在:tensorflow/python/ops/check_ops.py.
参见指南:框架(contrib)
根据张量和 dtype 验证并返回浮点型.
对于诸如矩阵乘法的运算,输入和权重必须是相同的浮点型.此函数验证所有的张量类型都是相同的,验证该类型是否为 dtype(如果提供),并返回类型.类型必须是浮点类型.如果既不提供张量也不提供 dtype,函数将返回 dtypes.float32.
ARGS:
- tensors:输入值的张量.可以包括 None 元素,这将被忽略.
- dtype:预期类型.
返回:
验证类型.
注意:
- ValueError:如果既不提供张量也不提供 dtype,或者结果不是浮点型,或者输入的公共类型不是浮点类型.
tf.assert_scalar
tf.contrib.framework.assert_scalar
assert_scalar (
tensor,
name = None
)
定义在:tensorflow/python/ops/check_ops.py.
参见指南:框架(contrib)
tf.assert_type
assert_type (
tensor ,
tf_type ,
message = None ,
name = None
)
定义在:tensorflow/python/ops/check_ops.py.
参见指南:assert和布尔检查
静态断言给定的张量是指定的类型.
ARGS:
- tensor:一个 tensorflow 张量.
- tf_type:tensorflow 的类型(dtypes.float32,tf.int64,dtypes.bool等).
- message:对默认消息进行前缀操作的字符串.
- name :给这个 Op 的名称.默认为 “assert_type”.
举:
- TypeError:如果张量数据类型与 tf_type 不匹配.
返回:
返回 no_op,什么也不做.类型可以静态确定.
tf.assert_variables_initialized
assert_variables_initialized ( var_list = None )
定义在:tensorflow/python/ops/variables.py.
参见指南:变量>变量帮助函数
返回一个 Op 以检查变量是否已初始化.
注意:此函数已过时,将在6个月内删除.请更改您的实现以使用 report_uninitialized_variables ().
运行时, 如果尚未初始化任何变量, 则返回的 Op 将引发异常 FailedPreconditionError.
注意:此函数通过尝试获取变量的值来实现.如果其中一个变量未初始化,则可能会由C ++运行时记录消息,这在预料之中.
ARGS:
- var_list:要检查的变量对象的列表.默认值为 global_variables().
返回:
一个 Op,如果没有变量,则为 None.
注意:应使用此函数的输出.如果不是, 则会记录一个警告.若要将输出标记为已用, 请调用其. mark_used () 方法.
更多建议: