Given a tensor input, this operation returns a tensor of the same type with
all dimensions of size 1 removed. If you don't want to remove all size 1
dimensions, you can remove specific size 1 dimensions by specifying
axis.
For example:
# 't' is a tensor of shape [1, 2, 1, 3, 1, 1]tf.shape(tf.squeeze(t))# [2, 3]
Or, to remove specific size 1 dimensions:
# 't' is a tensor of shape [1, 2, 1, 3, 1, 1]tf.shape(tf.squeeze(t,[2,4]))# [1, 2, 3, 1]
Unlike the older op tf.compat.v1.squeeze, this op does not accept a
deprecated squeeze_dims argument.
@tf.functiondeffunc(x):print('x.shape:',x.shape)known_axes=[ifori,sizeinenumerate(x.shape)ifsize==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)return0_=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.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2024-04-26 UTC."],[],[],null,["# tf.squeeze\n\n\u003cbr /\u003e\n\n|-------------------------------------------------------------------------------------------------------------------------------|\n| [View source on GitHub](https://github.com/tensorflow/tensorflow/blob/v2.16.1/tensorflow/python/ops/array_ops.py#L4254-L4327) |\n\nRemoves dimensions of size 1 from the shape of a tensor. \n\n tf.squeeze(\n input, axis=None, name=None\n )\n\n### Used in the notebooks\n\n| Used in the guide | Used in the tutorials |\n|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| - [Logistic regression for binary classification with Core APIs](https://www.tensorflow.org/guide/core/logistic_regression_core) - [Multilayer perceptrons for digit recognition with Core APIs](https://www.tensorflow.org/guide/core/mlp_core) - [Quickstart for the TensorFlow Core APIs](https://www.tensorflow.org/guide/core/quickstart_core) - [Unicode strings](https://www.tensorflow.org/text/guide/unicode) | - [Learned data compression](https://www.tensorflow.org/tutorials/generative/data_compression) - [Generate music with an RNN](https://www.tensorflow.org/tutorials/audio/music_generation) - [Simple audio recognition: Recognizing keywords](https://www.tensorflow.org/tutorials/audio/simple_audio) - [Intro to Autoencoders](https://www.tensorflow.org/tutorials/generative/autoencoder) - [Transfer learning with YAMNet for environmental sound classification](https://www.tensorflow.org/tutorials/audio/transfer_learning_audio) |\n\nGiven a tensor `input`, this operation returns a tensor of the same type with\nall dimensions of size 1 removed. If you don't want to remove all size 1\ndimensions, you can remove specific size 1 dimensions by specifying\n`axis`.\n\n#### For example:\n\n # 't' is a tensor of shape [1, 2, 1, 3, 1, 1]\n tf.shape(tf.squeeze(t)) # [2, 3]\n\nOr, to remove specific size 1 dimensions: \n\n # 't' is a tensor of shape [1, 2, 1, 3, 1, 1]\n tf.shape(tf.squeeze(t, [2, 4])) # [1, 2, 3, 1]\n\nUnlike the older op [`tf.compat.v1.squeeze`](../tf/compat/v1/squeeze), this op does not accept a\ndeprecated `squeeze_dims` argument.\n| **Note:** if `input` is a [`tf.RaggedTensor`](../tf/RaggedTensor), then this operation takes `O(N)` time, where `N` is the number of elements in the squeezed dimensions.\n**Note:** If squeeze is performed on dimensions of unknown sizes, then the returned Tensor will be of unknown shape. A common situation is when the first (batch) dimension is of size `None`, [`tf.squeeze`](../tf/squeeze) returns `\u003cunknown\u003e` shape which may be a surprise. Specify the `axis=` argument to get the expected result, as illustrated in the following example: \n\n @tf.function\n def func(x):\n print('x.shape:', x.shape)\n known_axes = [i for i, size in enumerate(x.shape) if size == 1]\n y = tf.squeeze(x, axis=known_axes)\n print('shape of tf.squeeze(x, axis=known_axes):', y.shape)\n y = tf.squeeze(x)\n print('shape of tf.squeeze(x):', y.shape)\n return 0\n\n _ = func.get_concrete_function(tf.TensorSpec([None, 1, 2], dtype=tf.int32))\n # Output is.\n # x.shape: (None, 1, 2)\n # shape of tf.squeeze(x, axis=known_axes): (None, 2)\n # shape of tf.squeeze(x): \u003cunknown\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n| Args ---- ||\n|---------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `input` | A `Tensor`. The `input` to squeeze. |\n| `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`. |\n| `name` | A name for the operation (optional). |\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n| Returns ------- ||\n|---|---|\n| A `Tensor`. Has the same type as `input`. Contains the same data as `input`, but has one or more dimensions of size 1 removed. ||\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n| Raises ------ ||\n|--------------|--------------------------------------------------------------------------------------|\n| `ValueError` | The input cannot be converted to a tensor, or the specified axis cannot be squeezed. |\n\n\u003cbr /\u003e"]]