Spec-Zone.ru › TensorFlow

tf.TensorShape

Представляет форму Tensor.

Унаследован от: TraceType

Просмотр псевдонимов

Псевдонимы для миграции

Для получения более подробной информации см. Руководство по миграции.

tf.compat.v1.TensorShape

tf.TensorShape(
    dims
)

Используется в блокнотах

Используется в руководстве Используется в учебниках
  • TensorFlow 1.x по сравнению с TensorFlow 2 - Поведение и API
  • Концепции DTensor
  • Работа с RNN
  • Распределенный ввод
  • Наборы данных TensorFlow из коллекций MongoDB
t = tf.constant([[1,2,3],[4,5,6]])
t.shape
TensorShape([2, 3])

TensorShape — это статическое представление формы тензора. Во время выполнения в режиме eager тензор всегда имеет полностью определённую форму, но при отслеживании tf.function он может быть одним из следующих:

  • Полностью определённая форма: имеет известное количество измерений и известный размер для каждого измерения. Пример: TensorShape([16, 256])
  • Частично определённая форма: имеет известное количество измерений и неизвестный размер для одного или нескольких измерений. Пример: TensorShape([None, 256])
  • Неизвестная форма: имеет неизвестное количество измерений и неизвестный размер во всех измерениях. Пример: TensorShape(None)

Во время отслеживания функции t.shape вернёт объект TensorShape, представляющий форму тензора, как она известна во время отслеживания. Это статическое представление будет частично определено в тех случаях, когда точная форма зависит от значений в тензорах. Чтобы получить динамическое представление, используйте tf.shape(t), которое вернёт тензор, представляющий полностью определённую форму t. Таким образом, вы можете выразить логику, которая манипулирует формами тензоров, создавая другие тензоры, которые зависят от динамической формы t.

Примечание: tf.RaggedTensor.shape также возвращает tf.TensorShape, длины любых разрозненных измерений неизвестны (None).

Например, эта функция выводит TensorShape' (t.shape), when you trace the function, and returns a tensor <a href="../tf/shape"><code>tf.shape(t)</code></a> for given inputt`:

@tf.function
def get_dynamic_shape(t):
  print("tracing...")
  print(f"static shape is {t.shape}")
  return tf.shape(t)

Просто вызывая функцию, отслеживается с полностью определённой статической формой:

result = get_dynamic_shape(tf.constant([[1, 1, 1], [0, 0, 0]]))
tracing...
static shape is (2, 3)
result.numpy()
array([2, 3], dtype=int32)

Но tf.function также может отслеживать функцию с частично определённой (или даже неопределённой) формой:

cf1 = get_dynamic_shape.get_concrete_function(tf.TensorSpec(
                                              shape=[None, 2]))
tracing...
static shape is (None, 2)
cf1(tf.constant([[1., 0],[1, 0],[1, 0]])).numpy()
array([3, 2], dtype=int32)
cf2 = get_dynamic_shape.get_concrete_function(tf.TensorSpec(shape=None))
tracing...
static shape is <unknown>
cf2(tf.constant([[[[[1., 0]]]]])).numpy()
array([1, 1, 1, 1, 2], dtype=int32)

Если тензор получен операцией типа "Foo", его форма может быть выведена, если существует зарегистрированная функция формы для "Foo". Подробности о функциях формы и способах их регистрации см. в разделе Функции формы. В качестве альтернативы вы можете явно установить форму, используя tf.Tensor.ensure_shape.

Аргументы
dims Список измерений или None, если форма не определена.
Исключения
TypeError Если dims нельзя преобразовать в список измерений.
Атрибуты
dims Устаревшее. Возвращает список измерений для этой формы.

Предлагается использовать TensorShape.as_list вместо этого.

ndims Устаревший аксессор для rank.
rank Возвращает ранг этой формы или None, если он не определен.

Методы

as_list

Просмотр исходного кода

as_list()

Возвращает список целых чисел или None для каждого измерения.

Возвращает
Список целых чисел или None для каждого измерения.
Исключения
ValueError Если self — это неизвестная форма с неизвестным рангом.

as_proto

Просмотр исходного кода

as_proto()

Возвращает эту форму как TensorShapeProto.

assert_has_rank

Просмотр исходного кода

assert_has_rank(
    rank
)

Вызывает исключение, если self не совместима с заданным rank.

Аргументы
rank Целое число.
Исключения
ValueError Если self не представляет форму с заданным rank.

assert_is_compatible_with

Просмотр исходного кода

assert_is_compatible_with(
    other
)

Вызывает исключение, если self и other не представляют одинаковую форму.

Этот метод может быть использован для проверки, что существует форма, которую представляют как self, так и other.

Аргументы
other Другая TensorShape.
Исключения
ValueError Если self и other не представляют одинаковую форму.

assert_is_fully_defined

Просмотр исходного кода

assert_is_fully_defined()

Вызывает исключение, если self не полностью определена в каждом измерении.

Исключения
ValueError Если self не имеет известного значения для каждого измерения.

assert_same_rank

Просмотр исходного кода

assert_same_rank(
    other
)

Вызывает исключение, если self и other не имеют совместимых рангов.

Аргументы
other Другой TensorShape.
Исключения
ValueError Если self и other не представляют формы с одинаковым рангом.

concatenate

Просмотреть исходный код

concatenate(
    other
)

Возвращает конкатенацию размеров в self и other.

Примечание: Если либо self, либо other полностью неизвестны, конкатенация отбросит информацию об другой форме. В будущем мы можем поддерживать конкатенацию, сохраняющую эту информацию для использования с операцией среза.
Аргументы
other Другой TensorShape.
Возвращаемое значение
TensorShape, чьи размеры являются конкатенацией размеров в self и other.

experimental_as_proto

Просмотреть исходный код

experimental_as_proto() -> tensor_shape_pb2.TensorShapeProto

Возвращает представление прото в формате TensorShape.

experimental_from_proto

Просмотреть исходный код

@classmethod
experimental_from_proto(
    proto: tensor_shape_pb2.TensorShapeProto
) -> 'TensorShape'

Возвращает экземпляр TensorShape, основанный на сериализованном прото.

experimental_type_proto

Просмотреть исходный код

@classmethod
experimental_type_proto() -> Type[tensor_shape_pb2.TensorShapeProto]

Возвращает тип прото, связанный с сериализацией TensorShape.

is_compatible_with

Просмотреть исходный код

is_compatible_with(
    other
)

Возвращает True, если self совместимо с other.

Две, возможно, частично определённые формы совместимы, если существует полностью определённая форма, которую обе формы могут представлять. Таким образом, совместимость позволяет коду вывода форм рассуждать о частично определённых формах. Например:

  • TensorShape(None) совместима со всеми формами.

  • TensorShape([None, None]) совместима со всеми двумерными формами, такими как TensorShape([32, 784]), и также с TensorShape(None). Она не совместима, например, с TensorShape([None]) или TensorShape([None, None, None]).

  • TensorShape([32, None]) совместима со всеми двумерными формами с размером 32 в 0-м измерении, и также с TensorShape([None, None]) и TensorShape(None). Она не совместима, например, с TensorShape([32]), TensorShape([32, None, 1]) или TensorShape([64, None]).

  • TensorShape([32, 784]) совместима сама с собой, а также с TensorShape([32, None]), TensorShape([None, 784]), TensorShape([None, None]) и TensorShape(None). Она не совместима, например, с TensorShape([32, 1, 784]) или TensorShape([None]).

Отношение совместимости рефлексивно и симметрично, но не транзитивно. Например, TensorShape([32, 784]) совместима с TensorShape(None), а TensorShape(None) совместима с TensorShape([4, 4]), но TensorShape([32, 784]) не совместима с TensorShape([4, 4]).

Аргументы
other Другая TensorShape.
Возвращаемое значение
True, если self совместима с other.

is_fully_defined

Просмотреть исходный код

is_fully_defined()

Возвращает True, если self полностью определена в каждом измерении.

is_subtype_of

Просмотреть исходный код

is_subtype_of(
    other: tf.types.experimental.TraceType
) -> bool

Возвращает True, если self является подтипом other.

Форма A является подтипом формы B, если форма B может успешно её представить:

  • A TensorShape любого ранга является подтипом TensorShape(None).

  • TensorShape равного ранга являются ковариантными, то есть TensorShape([A1, A2, ..]) является подтипом TensorShape([B1, B2, ..]) тогда и только тогда, когда An является подтипом Bn.

    An является подтипом Bn, если An == Bn или Bn is None.

  • TensorShape различного определённого ранга не имеют отношения подтипов.

Отношение подтипов рефлексивно и транзитивно, но не симметрично.

Примеры:

  • TensorShape([32, 784]) является подтипом TensorShape(None), и TensorShape([4, 4]) также является подтипом TensorShape(None), но TensorShape([32, 784]) и TensorShape([4, 4]) не являются подтипами друг друга.

  • Все двумерные формы являются подтипами TensorShape([None, None]), такие как TensorShape([32, 784]). Не существует отношения подтипов с, например, TensorShape([None]) или TensorShape([None, None, None]).

  • TensorShape([32, None]) также является подтипом TensorShape([None, None]) и TensorShape(None). Он не является подтипом, например, TensorShape([32]), TensorShape([32, None, 1]), TensorShape([64, None]) или TensorShape([None, 32]).

  • TensorShape([32, 784]) является подтипом самого себя, а также TensorShape([32, None]), TensorShape([None, 784]), TensorShape([None, None]) и TensorShape(None). Он не имеет отношения подтипов с, например, TensorShape([32, 1, 784]) или TensorShape([None]).

Аргументы
other Другой TensorShape.
Возвращаемое значение
True, если self является подтипом other.

merge_with

Просмотреть исходный код

merge_with(
    other
)

Возвращает TensorShape, объединяющий информацию в self и other.

Измерения в self и other объединяются поэлементно, согласно правилам ниже:

Dimension(n).merge_with(Dimension(None)) == Dimension(n)
Dimension(None).merge_with(Dimension(n)) == Dimension(n)
Dimension(None).merge_with(Dimension(None)) == Dimension(None)
# raises ValueError for n != m
Dimension(n).merge_with(Dimension(m))

ts = tf.TensorShape([1,2]) ot1 = tf.TensorShape([1,2]) ts.merge_with(ot).as_list() [1,2]

ot2 = tf.TensorShape([1,None]) ts.merge_with(ot2).as_list() [1,2]

ot3 = tf.TensorShape([None, None]) ot3.merge_with(ot2).as_list() [1, None]

Аргументы
other Другой TensorShape.
Возвращаемое значение
TensorShape, содержащий объединённую информацию из self и other.
Исключения
ValueError Если self и other не совместимы.

most_specific_common_supertype

Просмотреть исходный код

most_specific_common_supertype(
    others: Sequence[tf.types.experimental.TraceType]
) -> Optional['TensorShape']

Возвращает самый общий супертип TensorShape для self и others.

  • TensorShape([None, 1]) — это наиболее специфическая TensorShape, обобщающая как TensorShape([2, 1]), так и TensorShape([5, 1]). Обратите внимание, что TensorShape(None) также является супертипом, но не является «наиболее специфическим».

  • TensorShape([1, 2, 3]) — это наиболее специфическая TensorShape, обобщающая как TensorShape([1, 2, 3]), так и TensorShape([1, 2, 3]. Существуют и другие менее специфичные TensorShapes, которые обобщают вышеупомянутые TensorShapes, например, TensorShape([1, 2, None]), TensorShape(None).

    • TensorShape([None, None]) — это наиболее специфическая TensorShape, обобщающая как TensorShape([2, None]), так и TensorShape([None, 3]). Как всегда, TensorShape(None) также является супертипом, но не самым специфичным.

    • TensorShape(None) — единственный TensorShape супертип, обобщающий как TensorShape([1, 2, 3]), так и TensorShape([1, 2]). В общем случае, любые две формы с разными рангами будут иметь только TensorShape(None) в качестве общего супертипа.

    • TensorShape(None) — это единственный TensorShape супертип, обобщающий как TensorShape([1, 2, 3]), так и TensorShape(None). В общем случае, общим супертипом любой формы с TensorShape(None) является TensorShape(None).

Args
others Последовательность TensorShape.
Returns
TensorShape, являющаяся наиболее специфической формой супертипа для self и others. None, если она не существует.

most_specific_compatible_shape

Просмотреть исходный код

most_specific_compatible_shape(
    other
) -> 'TensorShape'

Возвращает наиболее специфическую форму TensorShape, совместимую с self и other.

  • TensorShape([None, 1]) — это наиболее специфическая TensorShape, совместимая как с TensorShape([2, 1]), так и с TensorShape([5, 1]). Обратите внимание, что TensorShape(None) также совместима с вышеупомянутыми TensorShapes.

  • TensorShape([1, 2, 3]) — это наиболее специфическая TensorShape, совместимая как с TensorShape([1, 2, 3]), так и с TensorShape([1, 2, 3]). Существуют более менее специфические TensorShapes, совместимые с вышеупомянутыми TensorShapes, например, TensorShape([1, 2, None]), TensorShape(None).

Args
other Другая TensorShape.
Returns
TensorShape, представляющая собой наиболее специфическую совместимую форму self и other.

num_elements

Просмотреть исходный код

num_elements()

Возвращает общее количество элементов или None для неполных форм.

with_rank

Просмотреть исходный код

with_rank(
    rank
)

Возвращает форму, основанную на self, с заданным рангом.

Этот метод повышает полностью неизвестную форму до формы с известным рангом.

Args
rank Целое число.
Returns
Форма, которая не менее специфична, чем self с заданным рангом.
Raises
ValueError Если self не представляет форму с заданным rank.

with_rank_at_least

Просмотреть исходный код

with_rank_at_least(
    rank
)

Возвращает форму, основанную на self, с не меньшим, чем заданный, рангом.

Args
rank Целое число.
Returns
Форма, которая не менее специфична, чем self с не меньшим, чем заданный, рангом.
Raises
ValueError Если self не представляет форму с не меньшим, чем заданный, рангом.

with_rank_at_most

Просмотреть исходный код

with_rank_at_most(
    rank
)

Возвращает форму, основанную на self, с не большим, чем заданный, рангом.

Args
rank Целое число.
Returns
Форма, которая не менее специфична, чем self с не большим, чем заданный, рангом.
Raises
ValueError Если self не представляет форму с не большим, чем заданный, рангом.

__add__

Просмотреть исходный код

__add__(
    other
)

__bool__

Просмотреть исходный код

__bool__()

Возвращает True, если эта форма содержит ненулевую информацию.

__concat__

Просмотреть исходный код

__concat__(
    other
)

__eq__

Просмотреть исходный код

__eq__(
    other
)

Возвращает True, если self эквивалентно other.

Сначала пытается преобразовать other в TensorShape. TypeError генерируется при неудачном преобразовании. В противном случае сравнивает каждый элемент в измерениях TensorShape.

  • Две полностью известные формы возвращают True, если каждый элемент равен.
>>> t_a = tf.TensorShape([1,2])
>>> a = [1, 2]
>>> t_b = tf.TensorShape([1,2])
>>> t_c = tf.TensorShape([1,2,3])
>>> t_a.__eq__(a)
True
>>> t_a.__eq__(t_b)
True
>>> t_a.__eq__(t_c)
False
  • Две частично известные формы возвращают True, если каждый элемент равен.
>>> p_a = tf.TensorShape([1,None])
>>> p_b = tf.TensorShape([1,None])
>>> p_c = tf.TensorShape([2,None])
>>> p_a.__eq__(p_b)
True
>>> t_a.__eq__(p_a)
False
>>> p_a.__eq__(p_c)
False
  • Две неизвестные формы, возвращают True.
>>> unk_a = tf.TensorShape(None)
>>> unk_b = tf.TensorShape(None)
>>> unk_a.__eq__(unk_b)
True
>>> unk_a.__eq__(t_a)
False
Args
other TensorShape или тип, который можно преобразовать в TensorShape.
Returns
True, если все измерения равны.
Raises
TypeError, если other нельзя преобразовать в TensorShape.

__getitem__

Просмотреть исходный код

__getitem__(
    key
)

Возвращает значение измерения или формы в зависимости от ключа.

Args
key Если key — целое число, возвращает измерение в этом индексе; в противном случае, если key — срез, возвращает TensorShape, измерения которой выбираются срезом из self.
Returns
Целое число, если key — целое число, или TensorShape, если key — срез.
Raises
ValueError Если key — срез, и self полностью неизвестен, а шаг установлен.

__iter__

Просмотреть исходный код

__iter__()

Возвращает self.dims, если ранг известен, в противном случае генерирует ValueError.

__len__

Просмотреть исходный код

__len__()

Возвращает ранг этой формы, или генерирует ValueError, если он не указан.

__nonzero__

Просмотреть исходный код

__nonzero__()

Возвращает True, если эта форма содержит ненулевую информацию.

__radd__

Просмотреть исходный код

__radd__(
    other
)

© 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/TensorShape

Spec-Zone.ru

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