Bird
Raised Fist0
PyTorchml~5 mins

Reshaping (view, reshape, squeeze, unsqueeze) in PyTorch - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does the view() function do in PyTorch?

view() changes the shape of a tensor without copying data. It returns a new tensor with the same data but a different shape.

Click to reveal answer
intermediate
How is reshape() different from view() in PyTorch?

reshape() also changes tensor shape but can return a copy if needed, while view() requires the tensor to be contiguous and does not copy data.

Click to reveal answer
beginner
What does squeeze() do to a tensor?

squeeze() removes all dimensions of size 1 from a tensor, making it smaller in shape but keeping the same data.

Click to reveal answer
beginner
How does unsqueeze() modify a tensor?

unsqueeze() adds a dimension of size 1 at a specified position, increasing the tensor's number of dimensions.

Click to reveal answer
beginner
Why is reshaping tensors important in machine learning?

Reshaping helps match tensor shapes for operations like matrix multiplication, batching data, or preparing inputs for models.

Click to reveal answer
Which PyTorch function removes dimensions of size 1 from a tensor?
Asqueeze()
Bunsqueeze()
Creshape()
Dview()
What will tensor.view(-1, 3) do?
AChange tensor shape to have 3 columns and infer rows
BAdd a new dimension of size 3
CRemove all size 1 dimensions
DCopy tensor data to a new tensor
Which function can return a copy of the tensor if needed when reshaping?
Aview()
Breshape()
Csqueeze()
Dunsqueeze()
What does unsqueeze(0) do to a tensor?
ARemoves the first dimension
BFlattens the tensor
CAdds a new dimension at position 0
DChanges tensor data
Why must tensor shapes match for matrix multiplication?
ATo ensure data types match
BTo speed up training
CTo reduce memory usage
DTo align rows and columns correctly
Explain how view() and reshape() differ when changing tensor shapes in PyTorch.
Think about memory layout and copying.
You got /4 concepts.
    Describe a real-life example where you might use squeeze() and unsqueeze() when working with image data.
    Consider how images are stored and fed into models.
    You got /4 concepts.

      Practice

      (1/5)
      1. What does the torch.squeeze() function do to a tensor?
      easy
      A. Adds a new dimension of size 1 at a specified position
      B. Removes all dimensions of size 1 from the tensor
      C. Changes the tensor's data without changing its shape
      D. Flattens the tensor into a 1D vector

      Solution

      1. Step 1: Understand the purpose of squeeze

        torch.squeeze() removes dimensions that have size 1, effectively reducing unnecessary dimensions.
      2. Step 2: Differentiate from other reshape functions

        Unlike unsqueeze which adds size 1 dims, squeeze removes them without changing data.
      3. Final Answer:

        Removes all dimensions of size 1 from the tensor -> Option B
      4. Quick Check:

        squeeze removes size 1 dims = B [OK]
      Hint: Squeeze removes dims with size 1, like cleaning empty boxes [OK]
      Common Mistakes:
      • Confusing squeeze with unsqueeze
      • Thinking squeeze changes data values
      • Assuming squeeze flattens the tensor
      2. Which of the following is the correct syntax to add a new dimension at position 0 using PyTorch?
      easy
      A. tensor.unsqueeze(0)
      B. tensor.unsqueeze(1)
      C. tensor.squeeze(0)
      D. tensor.reshape(0)

      Solution

      1. Step 1: Recall unsqueeze syntax

        unsqueeze(dim) adds a dimension of size 1 at the specified dim index.
      2. Step 2: Identify correct dimension index

        To add at position 0 (the front), use unsqueeze(0). tensor.unsqueeze(1) adds at position 1, C squeezes, D is invalid.
      3. Final Answer:

        tensor.unsqueeze(0) -> Option A
      4. Quick Check:

        unsqueeze(0) adds dim at front = A [OK]
      Hint: unsqueeze(dim) adds size 1 dim at dim index [OK]
      Common Mistakes:
      • Using squeeze instead of unsqueeze
      • Passing wrong dimension index
      • Using reshape with a single integer argument
      3. Given the tensor t = torch.randn(2, 1, 3), what is the shape after t.view(2, 3)?
      medium
      A. (2, 3)
      B. (2, 1, 3)
      C. (1, 6)
      D. RuntimeError due to incompatible shape

      Solution

      1. Step 1: Understand original tensor shape

        Tensor t has shape (2, 1, 3), total elements = 2*1*3 = 6.
      2. Step 2: Check if view(2, 3) is compatible

        New shape (2, 3) also has 6 elements, so view can reshape without error.
      3. Final Answer:

        (2, 3) -> Option A
      4. Quick Check:

        view reshapes without changing total elements = A [OK]
      Hint: view reshapes if total elements match exactly [OK]
      Common Mistakes:
      • Confusing view with squeeze or unsqueeze
      • Assuming view changes data order
      • Trying incompatible shapes causing runtime error
      4. What is wrong with this code snippet?
      import torch
      t = torch.randn(3, 1, 4)
      t = t.view(3, 3, 1, 1)
      medium
      A. The new shape has more elements than original tensor
      B. view cannot add new dimensions, only reshape existing ones
      C. view requires contiguous tensor, but t is not contiguous
      D. The new shape is incompatible with the total number of elements

      Solution

      1. Step 1: Calculate original tensor elements

        Original shape (3,1,4) has 3*1*4 = 12 elements.
      2. Step 2: Calculate new shape elements

        New shape (3,3,1,1) has 3*3*1*1 = 9 elements, which does not match.
      3. Final Answer:

        The new shape is incompatible with the total number of elements -> Option D
      4. Quick Check:

        view fails if total elements don't match = C [OK]
      Hint: Check total elements before view; must match exactly [OK]
      Common Mistakes:
      • Assuming view cannot add dimensions
      • Confusing contiguous memory errors
      • Miscounting total elements
      5. You have a tensor x of shape (4, 1, 28, 28). You want to prepare it for a fully connected layer that expects input shape (4, 784). Which sequence of PyTorch operations correctly reshapes x without changing data order?
      hard
      A. x = x.view(4, 28, 28)
      B. x = x.unsqueeze(1).view(4, 1, 784)
      C. x = x.squeeze(1).view(4, 784)
      D. x = x.reshape(4, 1, 784)

      Solution

      1. Step 1: Understand original tensor shape

        x has shape (4, 1, 28, 28). The middle dimension is size 1, which is unnecessary for flattening.
      2. Step 2: Remove the size 1 dimension

        Use squeeze(1) to remove the dimension of size 1 at index 1, resulting in shape (4, 28, 28).
      3. Step 3: Flatten the last two dimensions

        Use view(4, 784) to reshape (4, 28, 28) into (4, 784) without changing data order.
      4. Final Answer:

        x = x.squeeze(1).view(4, 784) -> Option C
      5. Quick Check:

        Remove size 1 dim then flatten = D [OK]
      Hint: Squeeze first to remove size 1 dims, then view to flatten [OK]
      Common Mistakes:
      • Trying to view directly without squeezing
      • Using unsqueeze unnecessarily
      • Confusing reshape and view effects
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard