Bird
Raised Fist0
PyTorchml~20 mins

Tensor shapes and dimensions in PyTorch - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Tensor Shape Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the shape of the tensor after this operation?
Consider the following PyTorch code snippet. What is the shape of the tensor y after running this code?
PyTorch
import torch
x = torch.randn(4, 3, 2)
y = x.permute(1, 0, 2)
A(3, 4, 2)
B(4, 2, 3)
C(2, 3, 4)
D(3, 2, 4)
Attempts:
2 left
💡 Hint
Remember that permute rearranges the dimensions in the order you specify.
❓ Model Choice
intermediate
2:00remaining
Choosing the correct input shape for a CNN
You want to build a convolutional neural network (CNN) in PyTorch to classify color images of size 64x64 pixels. Which input tensor shape should you use for a batch of 16 images?
A(64, 64, 3, 16)
B(16, 64, 64, 3)
C(16, 3, 64, 64)
D(3, 16, 64, 64)
Attempts:
2 left
💡 Hint
PyTorch expects image tensors in the format (batch_size, channels, height, width).
❓ Hyperparameter
advanced
2:00remaining
Effect of batch size on tensor shape during training
If you change the batch size from 32 to 64 in a training loop, how does the shape of the input tensor to the model change?
AThe tensor shape remains unchanged
BAll dimensions double
CThe last dimension doubles, others stay the same
DThe first dimension doubles, other dimensions stay the same
Attempts:
2 left
💡 Hint
Batch size affects the number of samples processed at once, which is the first dimension.
🔧 Debug
advanced
2:00remaining
Why does this tensor reshape cause an error?
Given a tensor t with shape (2, 3, 4), why does the following code raise an error?
t.view(3, 7)
PyTorch
import torch
t = torch.randn(2, 3, 4)
t_reshaped = t.view(3, 7)
ABecause view cannot change the number of dimensions
BBecause the total number of elements does not match between original and new shape
CBecause 3 and 8 are not valid dimensions for any tensor
DBecause the tensor must be contiguous before calling view
Attempts:
2 left
💡 Hint
Check the total number of elements before and after reshape.
🧠 Conceptual
expert
2:00remaining
Understanding broadcasting with tensor shapes
You have two tensors: a with shape (5, 1, 4) and b with shape (1, 3, 4). What will be the shape of the result when you add a + b in PyTorch?
A(5, 3, 4)
B(5, 1, 4)
C(1, 3, 4)
D(5, 3)
Attempts:
2 left
💡 Hint
Broadcasting expands dimensions of size 1 to match the other tensor's size.

Practice

(1/5)
1. What does the shape of a PyTorch tensor represent?
easy
A. The number of elements in each dimension of the tensor
B. The data type of the tensor elements
C. The device where the tensor is stored
D. The memory size of the tensor in bytes

Solution

  1. Step 1: Understand tensor shape meaning

    The shape of a tensor tells how many elements are in each dimension, like rows and columns in a matrix.
  2. Step 2: Differentiate from other properties

    Data type, device, and memory size are different properties and not related to shape.
  3. Final Answer:

    The number of elements in each dimension of the tensor -> Option A
  4. Quick Check:

    Tensor shape = elements per dimension [OK]
Hint: Shape = counts of elements per dimension [OK]
Common Mistakes:
  • Confusing shape with data type
  • Thinking shape shows memory size
  • Mixing shape with device location
2. Which of the following is the correct way to get the shape of a tensor t in PyTorch?
easy
A. shape(t)
B. t.shape()
C. t.size()
D. t.get_shape()

Solution

  1. Step 1: Recall PyTorch shape methods

    In PyTorch, t.size() returns the shape of the tensor as a tuple-like object.
  2. Step 2: Check other options

    t.shape is an attribute, not a method, so t.shape() is incorrect. shape(t) and t.get_shape() are not valid PyTorch syntax.
  3. Final Answer:

    t.size() -> Option C
  4. Quick Check:

    Use t.size() to get shape [OK]
Hint: Use t.size() method to get shape [OK]
Common Mistakes:
  • Calling t.shape() as a method
  • Using non-existent functions like shape(t)
  • Trying t.get_shape() which is invalid
3. What is the shape of the tensor created by torch.randn(3, 4, 5)?
medium
A. (3, 5, 4)
B. (3, 4, 5)
C. (5, 3, 4)
D. (4, 5, 3)

Solution

  1. Step 1: Understand torch.randn arguments

    The arguments (3, 4, 5) specify the size of each dimension in order: first dimension 3, second 4, third 5.
  2. Step 2: Confirm shape matches arguments

    The tensor shape matches exactly the arguments given, so the shape is (3, 4, 5).
  3. Final Answer:

    (3, 4, 5) -> Option B
  4. Quick Check:

    Shape matches input sizes (3,4,5) [OK]
Hint: Shape matches torch.randn arguments order [OK]
Common Mistakes:
  • Mixing up dimension order
  • Assuming shape is reversed
  • Confusing shape with total elements
4. Consider this code snippet:
import torch
t = torch.randn(2, 3)
print(t.shape())

What error will this code produce?
medium
A. TypeError: 'torch.Size' object is not callable
B. AttributeError: 'Tensor' object has no attribute 'shape'
C. SyntaxError: invalid syntax
D. No error, prints (2, 3)

Solution

  1. Step 1: Identify usage of t.shape()

    In PyTorch, t.shape is an attribute, not a method, so calling t.shape() tries to call a non-callable object.
  2. Step 2: Understand error type

    This causes a TypeError saying the 'torch.Size' object is not callable.
  3. Final Answer:

    TypeError: 'torch.Size' object is not callable -> Option A
  4. Quick Check:

    t.shape is attribute, not method [OK]
Hint: t.shape is attribute, don't add () [OK]
Common Mistakes:
  • Calling t.shape() instead of t.shape
  • Expecting no error from t.shape()
  • Confusing AttributeError with TypeError
5. You have a tensor x with shape (10, 5, 3). You want to reshape it to a 2D tensor with 5 rows and keep the total number of elements the same. Which of the following shapes is valid for the reshaped tensor?
hard
A. (5, 15)
B. (5, 10, 3)
C. (5, 5, 6)
D. (5, 30)

Solution

  1. Step 1: Calculate total elements in original tensor

    Original shape is (10, 5, 3), so total elements = 10 * 5 * 3 = 150.
  2. Step 2: Check which new shape keeps total elements and has 5 rows

    We want 5 rows, so first dimension = 5. The second dimension must satisfy 5 * ? = 150, so ? = 30. Check options:
    - A: (5, 15) -> 5*15=75 invalid total elements
    - B: (5, 10, 3) -> 5*10*3=150 valid but has 3 dims, not 2
    - C: (5, 30) -> 5*30=150 valid
    - D: (5, 5, 6) -> 5*5*6=150 valid but 3 dims
  3. Step 3: Confirm valid shape with 5 rows and total elements

    (5, 30) is (5, 30) which matches 5 rows and total elements 150. (5, 15) is incorrect because 5*15=75, less than 150.
  4. Final Answer:

    (5, 30) -> Option D
  5. Quick Check:

    5 * 30 = 150 elements [OK]
Hint: Total elements must stay same; multiply dims to check [OK]
Common Mistakes:
  • Ignoring total element count when reshaping
  • Choosing shape with wrong total elements
  • Confusing number of dimensions required
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