Bird
Raised Fist0
PyTorchml~12 mins

Tensor operations (add, mul, matmul) in PyTorch - Model Pipeline Trace

Choose your learning style10 modes available
Model Pipeline - Tensor operations (add, mul, matmul)

This pipeline shows how tensors (multi-dimensional arrays) are combined using addition, element-wise multiplication, and matrix multiplication. These operations are the building blocks for many machine learning models.

Data Flow - 4 Stages
1Input tensors
2 rows x 3 columns→Create two tensors A and B→2 rows x 3 columns
A = [[1, 2, 3], [4, 5, 6]], B = [[7, 8, 9], [10, 11, 12]]
↓
2Tensor addition
2 rows x 3 columns→Add tensors A and B element-wise→2 rows x 3 columns
A + B = [[8, 10, 12], [14, 16, 18]]
↓
3Element-wise multiplication
2 rows x 3 columns→Multiply tensors A and B element-wise→2 rows x 3 columns
A * B = [[7, 16, 27], [40, 55, 72]]
↓
4Matrix multiplication
A: 2 rows x 3 columns, B_transposed: 3 rows x 2 columns→Multiply tensor A by the transpose of B→2 rows x 2 columns
A @ B.T = [[50, 68], [122, 167]]
Training Trace - Epoch by Epoch
Loss
0.8 |****
0.6 |***
0.4 |**
0.3 |*
0.2 |
EpochLoss ↓Accuracy ↑Observation
10.80.45Initial random weights, loss is high, accuracy low
20.60.60Loss decreased, accuracy improved
30.40.75Model learning well, loss dropping steadily
40.30.85Good convergence, accuracy increasing
50.20.90Training nearing completion, loss low
Prediction Trace - 4 Layers
Layer 1: Input tensors
Layer 2: Addition (A + B)
Layer 3: Element-wise multiplication (A * B)
Layer 4: Matrix multiplication (A @ B.T)
Model Quiz - 3 Questions
Test your understanding
What is the shape of the result when you add two tensors of shape 2x3?
A3 rows x 2 columns
B2 rows x 3 columns
C2 rows x 2 columns
D3 rows x 3 columns
Key Insight
Tensor operations like addition, element-wise multiplication, and matrix multiplication are fundamental for building and training machine learning models. Understanding how shapes change and how these operations combine data helps in designing correct and efficient models.

Practice

(1/5)
1. Which PyTorch function is used for element-wise multiplication of two tensors?
easy
A. torch.matmul()
B. torch.dot()
C. torch.add()
D. torch.mul()

Solution

  1. Step 1: Understand element-wise multiplication

    Element-wise multiplication multiplies each element of one tensor by the corresponding element of another tensor.
  2. Step 2: Identify the correct PyTorch function

    torch.mul() performs element-wise multiplication, while torch.matmul() is for matrix multiplication.
  3. Final Answer:

    torch.mul() -> Option D
  4. Quick Check:

    Element-wise multiply = torch.mul() [OK]
Hint: Element-wise multiply uses torch.mul() not matmul [OK]
Common Mistakes:
  • Confusing matmul with element-wise multiply
  • Using torch.add() instead of multiply
  • Trying torch.dot() for element-wise multiply
2. Which of the following is the correct syntax to add two tensors a and b in PyTorch?
easy
A. c = torch.add(a, b)
B. c = a + b + 1
C. c = torch.mul(a, b)
D. c = torch.matmul(a, b)

Solution

  1. Step 1: Identify the addition operation

    Adding two tensors element-wise can be done with torch.add(a, b) or a + b.
  2. Step 2: Check syntax correctness

    torch.add(a, b) is the correct function call. c = a + b + 1 adds 1 extra, so it's incorrect.
  3. Final Answer:

    c = torch.add(a, b) -> Option A
  4. Quick Check:

    Tensor add syntax = torch.add(a, b) [OK]
Hint: Use torch.add(a, b) or a + b for tensor addition [OK]
Common Mistakes:
  • Adding extra numbers accidentally
  • Using mul or matmul instead of add
  • Incorrect function call syntax
3. What is the output of the following PyTorch code?
import torch
x = torch.tensor([[1, 2], [3, 4]])
y = torch.tensor([[5, 6], [7, 8]])
z = torch.matmul(x, y)
print(z)
medium
A. tensor([[5, 12], [21, 32]])
B. tensor([[6, 8], [10, 12]])
C. tensor([[19, 22], [43, 50]])
D. tensor([[6, 8], [21, 32]])

Solution

  1. Step 1: Perform matrix multiplication manually

    Multiply rows of x by columns of y:
    First row: (1*5 + 2*7) = 19, (1*6 + 2*8) = 22
    Second row: (3*5 + 4*7) = 43, (3*6 + 4*8) = 50
  2. Step 2: Confirm output tensor

    The result tensor is [[19, 22], [43, 50]].
  3. Final Answer:

    tensor([[19, 22], [43, 50]]) -> Option C
  4. Quick Check:

    Matrix multiply result = [[19, 22], [43, 50]] [OK]
Hint: Multiply rows by columns for matmul output [OK]
Common Mistakes:
  • Adding elements instead of multiplying
  • Confusing element-wise multiply with matmul
  • Mixing row and column indices
4. Identify the error in this PyTorch code snippet:
import torch
x = torch.tensor([1, 2, 3])
y = torch.tensor([[4, 5, 6], [7, 8, 9]])
z = torch.matmul(x, y)
print(z)
medium
A. Shape mismatch for matrix multiplication
B. x and y must be the same shape for matmul
C. torch.matmul cannot multiply 1D and 2D tensors
D. No error, code runs fine

Solution

  1. Step 1: Check tensor shapes

    x shape is (3,), y shape is (2, 3). For matmul, inner dimensions must match: (N, M) x (M, P).
  2. Step 2: Identify mismatch

    Here, x is 1D with length 3, y is 2D with shape (2, 3). The inner dimensions don't align for matmul.
  3. Final Answer:

    Shape mismatch for matrix multiplication -> Option A
  4. Quick Check:

    Matmul needs matching inner dims = shape mismatch [OK]
Hint: Check tensor shapes before matmul to avoid mismatch [OK]
Common Mistakes:
  • Assuming 1D and 2D tensors always multiply
  • Ignoring shape rules for matmul
  • Thinking matmul works like element-wise multiply
5. Given two tensors a = torch.tensor([[1, 2], [3, 4]]) and b = torch.tensor([[2, 0], [1, 2]]), which code correctly computes the element-wise product and then adds the matrix product of a and b?
hard
A. torch.matmul(torch.mul(a, b), torch.add(a, b))
B. torch.add(torch.mul(a, b), torch.matmul(a, b))
C. torch.mul(torch.add(a, b), torch.matmul(a, b))
D. torch.add(torch.matmul(b, a), torch.mul(a, b))

Solution

  1. Step 1: Understand the operations order

    First, compute element-wise product: torch.mul(a, b). Then compute matrix product: torch.matmul(a, b).
  2. Step 2: Add the two results

    Use torch.add() to sum the element-wise and matrix products.
  3. Final Answer:

    torch.add(torch.mul(a, b), torch.matmul(a, b)) -> Option B
  4. Quick Check:

    Element-wise mul + matmul = torch.add(torch.mul(), torch.matmul()) [OK]
Hint: Add element-wise mul and matmul results with torch.add() [OK]
Common Mistakes:
  • Mixing order of operations
  • Using mul on sums instead of add on products
  • Confusing arguments order in add or mul
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