阅读(24.8k) 书签 (0)

TensorFlow中Assert相关函数说明

2018-08-31 16:39 更新

本节将对 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 () 方法.