當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Python tf.compat.v1.debugging.assert_shapes用法及代碼示例

斷言張量之間的張量形狀和尺寸大小關係。

用法

tf.compat.v1.debugging.assert_shapes(
    shapes, data=None, summarize=None, message=None, name=None
)

參數

  • shapes 的列表 (Tensor,shape) 元組,其中shape是預期的形狀Tensor.請參閱上麵的示例代碼。這shape必須是可迭代的。可迭代的每個元素可以是具體的整數值,也可以是抽象表示維度的字符串。例如,
    • ('N', 'Q') 指定二維形狀,其中形狀的第一維和第二維可能相等,也可能不相等。
    • ('N', 'N', 'Q') 指定第一個和第二個維度相等的 3D 形狀。
    • (1, 'N') 指定二維形狀,其中第一個維度正好是 1,第二個維度可以是任何值。請注意,抽象維度字母在列表的不同元組元素中生效。例如,tf.debugging.assert_shapes([(x, ('N', 'A')), (y, ('N', 'B'))] 斷言 xy 都是 rank-2 張量,並且它們的第一個維度相等(N)。 shape 也可以是 tf.TensorShape
  • data 如果條件為 False,則打印出的張量。默認為錯誤消息和違規張量的前幾個條目。
  • summarize 打印這麽多張量條目。
  • message 默認消息的前綴字符串。
  • name 此操作的名稱(可選)。默認為"assert_shapes"。

返回

  • 除非滿足所有形狀約束,否則操作會提高 InvalidArgumentError。如果靜態檢查確定滿足所有約束條件,則返回 no_op

拋出

  • ValueError 如果靜態檢查確定違反了任何形狀約束。

此操作檢查張量形狀關係的集合是否滿足給定的約束。

例子:

n = 10
q = 3
d = 7
x = tf.zeros([n,q])
y = tf.ones([n,d])
param = tf.Variable([1.0, 2.0, 3.0])
scalar = 1.0
tf.debugging.assert_shapes([
 (x, ('N', 'Q')),
 (y, ('N', 'D')),
 (param, ('Q',)),
 (scalar, ()),
])
tf.debugging.assert_shapes([
  (x, ('N', 'D')),
  (y, ('N', 'D'))
])
Traceback (most recent call last):

ValueError:...

將依賴項添加到操作的示例:

with tf.control_dependencies([tf.assert_shapes(shapes)]):
  output = tf.matmul(x, y, transpose_a=True)

如果 x , y , paramscalar 不具有滿足所有指定約束的形狀,則 message 以及第一個遇到的違規張量的第一個 summarize 條目將被打印,並引發 InvalidArgumentError

指定形狀中的大小條目通過其哈希值與其他條目進行檢查,除了:

  • 如果可以將大小條目解析為整數原語,則將其解釋為顯式大小。
  • 如果大小條目為 None 或 '.',則將其解釋為任何大小。

如果形狀的第一個條目是...(類型Ellipsis)或'*',表示未指定大小的可變數量的外部尺寸,即約束僅適用於inner-most尺寸。

標量張量和長度為零的指定形狀(不包括'inner-most' 前綴)都被視為具有大小為一的單一維度。

相關用法


注:本文由純淨天空篩選整理自tensorflow.org大神的英文原創作品 tf.compat.v1.debugging.assert_shapes。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。