Spec-Zone.ru › TensorFlow

tf.compat.v1.debugging.assert_shapes

Проверяет формы тензоров и соотношения между размерами измерений тензоров.

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

Эта операция проверяет, удовлетворяет ли набор тензоров заданным ограничениям на соотношения между их формами.

Пример:

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, param или scalar не имеет формы, удовлетворяющей всем указанным ограничениям, выводятся message, а также первые summarize элементов первого обнаруженного тензора, нарушающего ограничения, и вызывается InvalidArgumentError.

Размеры в указанных формах сравниваются с другими размерами по их хешу, за исключением следующих случаев:

  • значение размера интерпретируется как явный размер, если его можно разобрать как целое число.
  • значение размера интерпретируется как произвольный размер, если оно равно None или '.'.

Если первый элемент формы — ... (тип Ellipsis) или '*', это означает переменное число внешних измерений неопределённого размера, то есть ограничение применяется только к самым внутренним измерениям.

Скалярные тензоры и указанные формы длины ноль (без префикса «самые внутренние») в обоих случаях рассматриваются как имеющие одно измерение размера один.

Аргументы
shapes Список кортежей (Tensor, shape), где shape — ожидаемая форма Tensor. См. пример кода выше. Значение shape должно быть итерируемым объектом. Каждый элемент этого объекта может быть целым числом или строкой, абстрактно представляющей измерение. Например,
  • ('N', 'Q') задаёт двумерную форму, в которой первое и второе измерения могут быть как равны, так и не равны друг другу.
  • ('N', 'N', 'Q') задаёт трёхмерную форму, в которой первое и второе измерения равны.
  • (1, 'N') задаёт двумерную форму, в которой первое измерение в точности равно 1, а второе может иметь любое значение. Обратите внимание, что буквы абстрактных измерений учитываются для разных элементов кортежей списка. Например, tf.debugging.assert_shapes([(x, ('N', 'A')), (y, ('N', 'B'))] утверждает, что x и y — тензоры ранга 2 с равными первыми измерениями (N). shape также может быть объектом tf.TensorShape.
data Тензоры, которые нужно вывести, если условие ложно. По умолчанию выводятся сообщение об ошибке и первые несколько элементов тензора, нарушающего ограничения.
summarize Количество элементов тензора, которые нужно вывести.
message Строка, добавляемая в начало сообщения по умолчанию.
name Имя этой операции (необязательно). По умолчанию — "assert_shapes".
Возвращает
Операцию, вызывающую InvalidArgumentError, если не выполнены все ограничения на формы. Если статические проверки определяют, что все ограничения выполнены, возвращается no_op.
Вызывает исключение
ValueError Если статические проверки определяют, что нарушено какое-либо ограничение на форму.

© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/api_docs/python/tf/compat/v1/debugging/assert_shapes

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API