tf.squeeze
Удаляет из формы тензора измерения размера 1.
tf.squeeze(
input, axis=None, name=None
)
Используется в блокнотах
| Используется в руководстве | Используется в учебных материалах |
|---|---|
Для заданного тензора input эта операция возвращает тензор того же типа, в котором удалены все измерения размера 1. Если необходимо удалить не все измерения размера 1, можно удалить определённые измерения размера 1, указав axis.
Например:
# 't' is a tensor of shape [1, 2, 1, 3, 1, 1] tf.shape(tf.squeeze(t)) # [2, 3]
Или, чтобы удалить определённые измерения размера 1:
# 't' is a tensor of shape [1, 2, 1, 3, 1, 1] tf.shape(tf.squeeze(t, [2, 4])) # [1, 2, 3, 1]
В отличие от более старого оператора tf.compat.v1.squeeze, этот оператор не принимает устаревший аргумент squeeze_dims.
Примечание: еслиinput— этоtf.RaggedTensor, то эта операция выполняется заO(N), гдеN— количество элементов в сжимаемых измерениях.
Примечание: Если операция squeeze применяется к измерениям с неизвестными размерами, возвращаемый тензор будет иметь неизвестную форму. Часто это происходит, когда первое измерение (пакета) имеет размерNone:tf.squeezeвозвращает форму<unknown>, что может оказаться неожиданным. Укажите аргументaxis=, чтобы получить ожидаемый результат, как показано в следующем примере:
@tf.function
def func(x):
print('x.shape:', x.shape)
known_axes = [i for i, size in enumerate(x.shape) if size == 1]
y = tf.squeeze(x, axis=known_axes)
print('shape of tf.squeeze(x, axis=known_axes):', y.shape)
y = tf.squeeze(x)
print('shape of tf.squeeze(x):', y.shape)
return 0
_ = func.get_concrete_function(tf.TensorSpec([None, 1, 2], dtype=tf.int32))
# Output is.
# x.shape: (None, 1, 2)
# shape of tf.squeeze(x, axis=known_axes): (None, 2)
# shape of tf.squeeze(x): <unknown>
| Аргументы | |
|---|---|
input | Tensor. input для сжатия. |
axis | Необязательный список ints. По умолчанию — []. Если указан, сжимаются только перечисленные измерения. Индекс измерения начинается с 0. Попытка сжать измерение, отличное от 1, приводит к ошибке. Должен находиться в диапазоне [-rank(input), rank(input)). Его необходимо указать, если input — это RaggedTensor. |
name | Имя операции (необязательно). |
| Возвращает | |
|---|---|
Tensor. Имеет тот же тип, что и input. Содержит те же данные, что и input, но с одним или несколькими удалёнными измерениями размера 1. |
| Вызывает исключение | |
|---|---|
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/squeeze