当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。