tf.TensorShape
| Просмотреть исходный код на GitHub |
Представляет форму Tensor.
Наследуется от: TraceType
tf.TensorShape(
dims
)
Объект TensorShape представляет собой возможно частичное описание формы Tensor. Он может быть одним из следующих:
-
Полностью известная форма: имеет известное количество измерений и известный размер для каждого измерения. Пример:
TensorShape([16, 256]) -
Частично известная форма: имеет известное количество измерений и неизвестный размер для одного или нескольких измерений. Пример:
TensorShape([None, 256]) -
Неизвестная форма: имеет неизвестное количество измерений и неизвестный размер во всех измерениях. Пример:
TensorShape(None)
Если тензор получен операцией типа "Foo", его форму можно вывести, если существует зарегистрированная функция вывода формы для "Foo". См. Функции вывода формы для получения подробной информации о функциях вывода формы и о том, как их регистрировать. В качестве альтернативы, вы можете явно установить форму, используя tf.Tensor.set_shape.
| Аргументы | |
|---|---|
dims | Список измерений или None, если форма не указана. |
| Исключения | |
|---|---|
TypeError | Если dims нельзя преобразовать в список измерений. |
| Атрибуты | |
|---|---|
dims | Устарело. Возвращает список измерений для этой формы. Предлагается использовать |
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. |
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).-
TensorShapes с одинаковыми рангами являются ковариантными, т.е.
TensorShape([A1, A2, ..])является подтипомTensorShape([B1, B2, ..])тогда и только тогда, когда An является подтипом Bn.An является подтипом Bn тогда и только тогда, когда An == Bn или Bn равно None.
TensorShapes с разными заданными рангами не имеют отношения подтипов.
Отношение подтипов рефлексивно и транзитивно, но не симметрично.
Примеры:
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. |
| Возвращаемое значение | |
|---|---|
A 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).
| Аргументы | |
|---|---|
others | Последовательность TensorShape |
| Возвращаемое значение | |
|---|---|
TensorShape, являющийся наиболее общим супертипом формы self и others. None, если он не существует. |
most_specific_compatible_shape
most_specific_compatible_shape(
other
)
Возвращает наиболее специфичную 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).
| Аргументы | |
|---|---|
other | Другая TensorShape. |
| Возвращаемое значение | |
|---|---|
TensorShape, являющаяся наиболее специфичной совместимой формой self и other |
num_elements
num_elements()
Возвращает общее количество элементов или None для неполных форм.
with_rank
with_rank(
rank
)
Возвращает форму на основе self с заданным рангом.
Этот метод преобразует полностью неизвестную форму в форму с известным рангом.
| Аргументы | |
|---|---|
rank | Целое число. |
| Возвращаемое значение | |
|---|---|
Форма, которая, по крайней мере, так же специфична, как self с заданным рангом. |
| Исключения | |
|---|---|
ValueError | Если self не представляет форму с заданным rank. |
with_rank_at_least
with_rank_at_least(
rank
)
Возвращает форму на основе self с, по крайней мере, заданным рангом.
| Аргументы | |
|---|---|
rank | Целое число. |
| Возвращаемое значение | |
|---|---|
Форма, которая, по крайней мере, так же специфична, как self с, по крайней мере, заданным рангом. |
| Исключения | |
|---|---|
ValueError | Если self не представляет форму с, по крайней мере, заданным rank. |
with_rank_at_most
with_rank_at_most(
rank
)
Возвращает форму на основе self с, не более чем, заданным рангом.
| Аргументы | |
|---|---|
rank | Целое число. |
| Возвращаемое значение | |
|---|---|
Форма, которая, по крайней мере, так же специфична, как self с, не более чем, заданным рангом. |
| Исключения | |
|---|---|
ValueError | Если self не представляет форму с, не более чем, заданным rank. |
__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
| Аргументы | |
|---|---|
other | TensorShape или тип, который может быть преобразован в TensorShape. |
| Возвращаемое значение | |
|---|---|
| True, если все размеры равны. |
| Исключения | |
|---|---|
TypeError, если other нельзя преобразовать в TensorShape. |
__getitem__
__getitem__(
key
)
Возвращает значение измерения или формы в зависимости от ключа.
| Аргументы | |
|---|---|
key | Если key является целым числом, возвращает измерение в этом индексе; иначе, если key — срез, возвращает TensorShape, чьи измерения выбираются срезом из self. |
| Возвращаемое значение | |
|---|---|
Целое число, если key — целое число, или TensorShape, если key — срез. |
| Исключения | |
|---|---|
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/versions/r2.9/api_docs/python/tf/TensorShape