TensorFlow中Assert相關(guān)函數(shù)說明

2018-08-31 16:39 更新

本節(jié)將對 TensorFlow 中與 Assert 相關(guān)的函數(shù)進(jìn)行具體的舉例說明,斷言給定條件的真假與條件中持有的元素.該部分的內(nèi)容比較的多,涉及到的函數(shù)有:tf.Assert、tf.assert_equal、tf.assert_greater、tf.assert_less等等,一些更為深入的函數(shù),下面會一一作出簡單的介紹,在使用這些函數(shù)的時(shí)候要注意分辨各個(gè)變量的使用.

tf.Assert


Assert (
condition ,
data ,
summarize = None ,
name = None
)

定義在tensorflow/python/ops/control_flow_ops.py

請參閱指南:控制流程>調(diào)試操作

斷言給定條件為真.

如果 condition 的結(jié)果為假,請打印 data 中的張量列表,summarize 用來確定要打印的張量的條目數(shù)量.

注意:為了確保斷言執(zhí)行,通常會附加依賴關(guān)系:

#確保X的最大元素小于或等于1個(gè)  
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:當(dāng)條件為假時(shí)打印出來的張量.
  • summarize:打印每個(gè)張量的許多條目.
  • name:此操作的名稱(可選).

返回:

  • assert_op:這個(gè)操作在執(zhí)行時(shí),提出一個(gè) tf.errors.InvalidArgumentError 如果條件不為真.

注意應(yīng)使用此函數(shù)的輸出.如果不是, 則會記錄一個(gè)警告.若要將輸出標(biāo)記為已用, 請調(diào)用其. 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 包含的元素.

向操作添加依賴關(guān)系的示例:

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:數(shù)值張量.
  • y:數(shù)值張量,相同的 dtype 類型并且可廣播到 x.
  • data:如果條件為假,打印出來張量.默認(rèn)為錯(cuò)誤消息和 x,y的前幾個(gè)條目.
  • summarize:打印每個(gè)張量的許多條目.
  • message:對默認(rèn)消息進(jìn)行前綴操作的字符串.
  • name:此操作的名稱(可選),默認(rèn)為 “assert_equal”.

返回:

如果 x = = y 為 False, 則引發(fā) 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 包含的元素.

向操作添加依賴關(guān)系的示例:

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:數(shù)值張量.
  • y:數(shù)值張量,相同的 dtype 并且可廣播到x.
  • data:如果條件為假,打印出來張量.默認(rèn)為錯(cuò)誤消息和 x,y的前幾個(gè)條目.
  • summarize:打印每個(gè)張量的許多條目.
  • message:對默認(rèn)消息進(jìn)行前綴操作的字符串.
  • name:此操作的名稱(可選),默認(rèn)為 “assert_greater”.

返回:

如果 x > y 是 False ,則引發(fā) 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 包含的元素.

向操作添加依賴關(guān)系的示例:

with tf.control_dependencies ([tf.assert_greater_equal ( x ,y)] ):
output = tf.reduce_sum (x)

如果對于每對(可能廣播)元素 x[i],y[i],這個(gè)條件成立,則有 x[i] >= y[i].如果 x 和 y 是空的,這很容易滿足.

ARGS:

  • x:數(shù)值張量.
  • y:數(shù)值張量,相同的 dtype 并且可廣播到 x.
  • data:如果條件為假,打印出來張量.默認(rèn)為錯(cuò)誤消息和 x,y 的前幾個(gè)條目.
  • summarize:打印每張張數(shù)的許多條目.
  • message:對默認(rèn)消息進(jìn)行前綴操作的字符串.
  • name:此操作的名稱(可選),默認(rèn)為 “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 是整數(shù) dtype.

向操作添加依賴關(guān)系的示例:

with tf.control_dependencies ([tf.assert_integer (x)] ):
output = tf.reduce_sum (x)

ARGS:

  • x:張量的 basetype 是整數(shù)并且未被量化.
  • message:對默認(rèn)消息進(jìn)行前綴操作的字符串.
  • name:此操作的名稱(可選).默認(rèn)為“assert_integer”.

注意:

  • TypeError:如果 x.dtype 是非量化整數(shù)的話.

返回:

返回一個(gè) no_op,它什么也不做,類型可以被定義為靜態(tài)的.

tf.assert_less


assert_less (
x ,
y ,
data = None ,
summarize = None ,
message = None ,
name = None
)

定義在:tensorflow/python/ops/check_ops.py.

參見指南:assert和布爾檢查

斷言條件 x < y 持有的元素.

向操作添加依賴關(guān)系的示例:

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:數(shù)值張量.
  • y:數(shù)值張量,相同的 dtype 并且可廣播到 x.
  • data:如果條件為 False,則打印出張量.默認(rèn)為錯(cuò)誤消息和 x,y 的前幾個(gè)條目.
  • summarize:打印每個(gè)張量的許多條目.
  • message:對默認(rèn)消息進(jìn)行前綴操作的字符串.
  • name:此操作的名稱(可選),默認(rèn)為 “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 的持有元素.

向操作添加依賴關(guān)系的示例:

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:數(shù)值張量.
  • y:數(shù)值張量,相同的 dtype,并且可廣播到 x.
  • data:如果條件為 False,則打印出張量.默認(rèn)為錯(cuò)誤消息和 x,y 的前幾個(gè)條目.
  • summarize:打印每個(gè)張量的許多條目.
  • message:對默認(rèn)消息進(jìn)行前綴操作的字符串.
  • name:此操作的名稱(可選),默認(rèn)為 “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 的持有元素.

向操作添加依賴關(guān)系的示例:

with tf.control_dependencies ([ tf.assert_negative(x)] ):
output = tf.reduce_sum(x)

Negative 的意思是對 x 的每個(gè)元素x[i] ,我們有 x[i] < 0.如果 x 是空的,該條件很容易滿足.

ARGS:

  • x:數(shù)值張量.
  • data:如果條件為 False,則打印出張量.默認(rèn)為錯(cuò)誤消息和 x 的前幾個(gè)條目.
  • summarize:打印個(gè)張量的許多條目.
  • message:對默認(rèn)消息進(jìn)行前綴操作的字符串.
  • name:此操作的名稱(可選).默認(rèn)為 “assert_negative”.

返回:

提高 InvalidArgumentError 的操作,除非x全部為負(fù).

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 適用于所有元素.

向操作添加依賴關(guān)系的示例:

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:數(shù)字Tensor.
  • y:數(shù)字Tensor,相同的dtype和可廣播x.
  • data:如果條件為False,張力打印出來.默認(rèn)為錯(cuò)誤消息和前幾個(gè)條目x,y.
  • summarize:打印每張張數(shù)的許多條目.
  • message:對默認(rèn)消息進(jìn)行前綴操作的字符串.
  • name:此操作的名稱(可選).默認(rèn)為“assert_none_equal”.

返回:

如果x != y永遠(yuǎn)是虛假的話,提高 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 的持有元素.

向操作添加依賴關(guān)系的示例:

with tf.control_dependencies ([tf.assert_non_negative (x)]):
output = tf.reduce_sum(x)

Non_negative 的意思是,對于 x 的每個(gè)元素 x[i] ,我們有 x[i] >= 0.如果 x 是空的,該條件很容易滿足.

ARGS:

  • x:數(shù)值張量.
  • data:如果條件為 False,則打印出張量.默認(rèn)為錯(cuò)誤消息和 x 的前幾個(gè)條目.
  • summarize:打印每個(gè)張量的許多條目.
  • message:對默認(rèn)消息進(jìn)行前綴操作的字符串.
  • name:此操作的名稱(可選).默認(rèn)為 “assert_non_negative”.

返回:

提高 InvalidArgumentError 的操作,除非 x 都是是非負(fù)的.

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保持元素.

向操作添加依賴關(guān)系的示例:

with tf.control_dependencies ([ tf.assert_non_positive (x)] ):   output = tf.reduce_sum (x)

Non-positive的意思是,對于每個(gè)元素 x[i],我們有 x[i] =0.如果 x 是空的,該條件很容易滿足.

ARGS:

  • x:數(shù)值張量.
  • data:如果條件為 False,則打印出張量.默認(rèn)為錯(cuò)誤消息和 x 的前幾個(gè)條目.
  • summarize:打印每個(gè)張量的許多條目.
  • message:對默認(rèn)消息進(jìn)行前綴操作的字符串.
  • name:此操作的名稱(可選).默認(rèn)為 “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保持元素.

向操作添加依賴關(guān)系的示例:

with tf.control_dependencies ([tf.assert_positive(x)]):
output = tf.reduce_sum (x)

Positive 的意思是,對于 x 的每一個(gè)元素 x[i],我們有 x[i] > 0.如果x是空的,該條件很容易成立.

ARGS:

  • x:數(shù)值張量.
  • data:如果條件為 False,則打印出張量.默認(rèn)為錯(cuò)誤消息和 x 的前幾個(gè)條目.
  • summarize:打印每個(gè)張量的許多條目.
  • message:對默認(rèn)消息進(jìn)行前綴操作的字符串.
  • name:此操作的名稱(可選).默認(rèn)為 “assert_positive”.

返回:

提高 InvalidArgumentError 的操作,除非 x 都是正的.

tf.assert_proper_iterable


assert_proper_iterable (values)

定義在:tensorflow/python/ops/check_ops.py.

參見指南:assert和布爾檢查

靜態(tài)斷言值是“適當(dāng)?shù)摹钡?

期望張量可以迭代的 Ops 可以調(diào)用它來驗(yàn)證輸入.由于張量、ndarray、byte / text 類型都是 iterables 本身,所以是有用的.

ARGS:

  • values:要檢查的對象.

舉:

  • TypeError:如果值不是迭代或者不是 Tensor、SparseTensor、np.array、tf.compat.bytes_or_text_types 中的一個(gè).

tf.assert_rank


assert_rank (
x ,
rank ,
data = None ,
summarize = None ,
message = None ,
name = None
)

定義在:tensorflow/python/ops/check_ops.py.

參見指南:assert和布爾檢查

斷言 x 的秩等于秩.

向操作添加依賴關(guān)系的示例:

with tf.control_dependencies ([ tf.assert_rank( X , 2 )] ):
output = tf.reduce_sum ( x )

ARGS:

  • x:數(shù)值張量.
  • rank:標(biāo)量整數(shù)張量.
  • data:如果條件為 False,則打印出張量.默認(rèn)為錯(cuò)誤消息和 x 的前幾個(gè)條目.
  • summarize:打印每個(gè)張量的許多條目.
  • message:對默認(rèn)消息進(jìn)行前綴操作的字符串.
  • name:此操作的名稱(可選),默認(rèn)為 “assert_rank”.

返回:

提高 InvalidArgumentError 的操作,除非 x 已經(jīng)有指定的秩.如果靜態(tài)檢查確定 x 具有正確的秩,則返回 no_op.

注意:

  • ValueError:如果靜態(tài)檢查確定 x 的秩錯(cuò)誤.

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 具有相等的秩或者更高的秩.

向操作添加依賴關(guān)系的示例:

with tf.control_dependencies ([tf.assert_rank_at_least(X ,2 )] ):
output = tf.reduce_sum ( x )

ARGS:

  • x:數(shù)值張量.
  • rank:標(biāo)量張量.
  • data:如果條件為 False,則打印出張量.默認(rèn)為錯(cuò)誤消息和 x 的前幾個(gè)條目.
  • summarize:打印每個(gè)張量的許多條目.
  • message:對默認(rèn)消息進(jìn)行前綴操作的字符串.
  • name:此操作的名稱(可選).默認(rèn)為 “assert_rank_at_least”.

返回:

提高 InvalidArgumentError 的操作,除非 x 已經(jīng)指定秩或更高.如果靜態(tài)檢查確定 x 具有正確的秩,則返回 no_op.

注意:

  • ValueError:如果靜態(tài)檢查確定 x 的秩錯(cuò)誤.

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)

根據(jù)張量和 dtype 驗(yàn)證并返回浮點(diǎn)型.

對于諸如矩陣乘法的運(yùn)算,輸入和權(quán)重必須是相同的浮點(diǎn)型.此函數(shù)驗(yàn)證所有的張量類型都是相同的,驗(yàn)證該類型是否為 dtype(如果提供),并返回類型.類型必須是浮點(diǎn)類型.如果既不提供張量也不提供 dtype,函數(shù)將返回 dtypes.float32.

ARGS:

  • tensors:輸入值的張量.可以包括 None 元素,這將被忽略.
  • dtype:預(yù)期類型.

返回:

驗(yàn)證類型.

注意:

  • ValueError:如果既不提供張量也不提供 dtype,或者結(jié)果不是浮點(diǎn)型,或者輸入的公共類型不是浮點(diǎn)類型.

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和布爾檢查

靜態(tài)斷言給定的張量是指定的類型.

ARGS:

  • tensor:一個(gè) tensorflow 張量.
  • tf_type:tensorflow 的類型(dtypes.float32,tf.int64,dtypes.bool等).
  • message:對默認(rèn)消息進(jìn)行前綴操作的字符串.
  • name :給這個(gè) Op 的名稱.默認(rèn)為 “assert_type”.

舉:

  • TypeError:如果張量數(shù)據(jù)類型與 tf_type 不匹配.

返回:

返回 no_op,什么也不做.類型可以靜態(tài)確定.

tf.assert_variables_initialized


assert_variables_initialized ( var_list = None )

定義在:tensorflow/python/ops/variables.py.

參見指南:變量>變量幫助函數(shù)

返回一個(gè) Op 以檢查變量是否已初始化.

注意:此函數(shù)已過時(shí),將在6個(gè)月內(nèi)刪除.請更改您的實(shí)現(xiàn)以使用 report_uninitialized_variables ().

運(yùn)行時(shí), 如果尚未初始化任何變量, 則返回的 Op 將引發(fā)異常 FailedPreconditionError.

注意:此函數(shù)通過嘗試獲取變量的值來實(shí)現(xiàn).如果其中一個(gè)變量未初始化,則可能會由C ++運(yùn)行時(shí)記錄消息,這在預(yù)料之中.

ARGS:

  • var_list:要檢查的變量對象的列表.默認(rèn)值為 global_variables().

返回:

一個(gè) Op,如果沒有變量,則為 None.

注意:應(yīng)使用此函數(shù)的輸出.如果不是, 則會記錄一個(gè)警告.若要將輸出標(biāo)記為已用, 請調(diào)用其. mark_used () 方法.

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號