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— количество элементов в сжимаемых измерениях.
Примечание: Если сжатие выполняется по измерениям неизвестного размера, то возвращаемый тензор будет иметь неизвестную форму. Частая ситуация — когда первое (партийное) измерение имеет размер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>
| Args | |
|---|---|
input | A Tensor. The input to squeeze. |
axis | An optional list of ints. Defaults to []. If specified, only squeezes the dimensions listed. The dimension index starts at 0. It is an error to squeeze a dimension that is not 1. Must be in the range [-rank(input), rank(input)). Must be specified if input is a RaggedTensor. |
name | A name for the operation (optional). |
| Returns | |
|---|---|
A Tensor. Has the same type as input. Contains the same data as input, but has one or more dimensions of size 1 removed. |
| Raises | |
|---|---|
ValueError | The input cannot be converted to a tensor, or the specified axis cannot be squeezed. |
© 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