When creating tensors, the main goal is to ensure the data is correctly represented for your model. The key "metric" here is correctness of shape and values. This means the tensor must have the right size, data type, and initial values to avoid errors during training or inference. While not a traditional metric like accuracy, this correctness is critical because a wrong tensor shape or values can cause your model to fail or learn poorly.
Tensor creation (torch.tensor, zeros, ones, rand) in PyTorch - Model Metrics & Evaluation
Tensor creation itself does not have a confusion matrix. But imagine you create a tensor for labels or inputs incorrectly, it can lead to wrong predictions. For example, if you create a tensor of zeros instead of random values for inputs, the model might always predict the same output.
Example tensor shapes:
torch.tensor([1, 2, 3]) # shape: (3,)
torch.zeros((2, 3)) # shape: (2, 3)
torch.ones((4, 4)) # shape: (4, 4)
torch.rand((2, 2)) # shape: (2, 2) with random values
For tensor creation, the tradeoff is between initialization simplicity and model performance. Using zeros or ones is simple but can cause the model to learn slowly or get stuck. Using rand (random values) helps the model start learning better but adds randomness. Choosing the right tensor creation method affects how well and fast your model learns.
Example:
- Zeros: Easy to create but may cause no learning if used for weights.
- Ones: Similar risk as zeros, can cause symmetry in learning.
- Random: Helps break symmetry and improves learning but adds variability.
Good tensor creation means:
- Correct shape matching model input/output requirements.
- Appropriate initial values (random for weights, exact values for labels).
- No shape mismatch errors during training.
Bad tensor creation means:
- Wrong shape causing runtime errors.
- Using zeros or ones for weights causing poor learning.
- Incorrect data types causing unexpected behavior.
- Shape mismatch: Creating tensors with wrong dimensions leads to errors.
- Wrong initialization: Using zeros or ones for weights can cause the model to not learn.
- Data type errors: Using integers instead of floats for inputs or weights can cause issues.
- Ignoring randomness: Not setting random seeds can cause non-reproducible results.
Your model training fails with a shape mismatch error. You realize you created input tensors with shape (10, 5) but the model expects (10, 3). Is your tensor creation correct? What should you do?
Answer: No, the tensor shape is incorrect. You should create tensors with the shape (10, 3) to match the model's expected input shape. This ensures the model can process the data without errors.
Practice
Solution
Step 1: Understand the purpose of each function
torch.zeros()creates a tensor filled with zeros,torch.ones()creates ones,torch.rand()creates random values, andtorch.tensor()converts data to tensor.Step 2: Match function to requirement
Since the question asks for a tensor filled with zeros,torch.zeros()is the correct choice.Final Answer:
torch.zeros() -> Option AQuick Check:
Zeros tensor = torch.zeros() [OK]
- Confusing torch.ones() with zeros
- Using torch.tensor() without data
- Thinking torch.rand() creates zeros
Solution
Step 1: Check valid argument types for torch.ones()
PyTorch accepts shape as separate ints or tuple/list.torch.ones(2, 3)uses separate ints (valid).torch.ones([2 3])missing comma (syntax error).torch.ones{2, 3}invalid braces.torch.ones((2 3))missing comma (syntax error).Step 2: Identify syntax errors
Onlytorch.ones(2, 3)is valid Python syntax.Final Answer:
torch.ones(2, 3) -> Option CQuick Check:
Separate args syntax = torch.ones(2, 3) [OK]
- Using curly braces instead of parentheses
- Confusing list and tuple syntax
- Missing commas between shape dimensions
torch.rand(3, 2)?Solution
Step 1: Understand torch.rand() behavior
torch.rand(3, 2)creates a tensor with shape (3, 2) filled with random floats between 0 and 1.Step 2: Compare options to expected output
A tensor of shape (3, 2) with random float values between 0 and 1 matches the shape and value type. Options A, B, and D are incorrect because they describe wrong shapes or values.Final Answer:
A tensor of shape (3, 2) with random float values between 0 and 1 -> Option DQuick Check:
torch.rand() = random floats [OK]
- Thinking torch.rand() creates integers
- Mixing up shape dimensions
- Assuming torch.rand() creates zeros or ones
import torch t = torch.zeros(2 3)
Solution
Step 1: Check syntax of torch.zeros() arguments
The code usestorch.zeros(2 3)missing a comma between 2 and 3, which is a syntax error.Step 2: Validate other options
torch.zeros() can create 2D tensors and accepts multiple int arguments or a tuple/list. dtype is optional.Final Answer:
Missing comma between dimensions in torch.zeros() -> Option AQuick Check:
Comma separates dimensions [OK]
- Omitting commas between shape dimensions
- Thinking dtype is mandatory
- Believing torch.zeros() can't create 2D tensors
[[1,2], [3,4]] and then create a tensor of the same shape filled with ones. Which code correctly does this?Solution
Step 1: Create tensor from list
torch.tensor(list_data)correctly converts the nested Python list to a (2,2) tensor.Step 2: Create tensor of ones with same shape
torch.ones(t1.shape)creates a tensor filled with ones matching the shape oft1((2,2)).Step 3: Check other options for correctness
import torch list_data = [[1,2], [3,4]] t1 = torch.ones(list_data) t2 = torch.tensor(t1.shape)
misuses torch.ones() with nested list (ValueError),import torch list_data = [[1,2], [3,4]] t1 = torch.tensor(list_data) t2 = torch.ones(len(t1))
uses length=2 instead of shape (creates (2,) not (2,2)),import torch list_data = [[1,2], [3,4]] t1 = torch.ones(len(list_data)) t2 = torch.tensor(t1.shape)
creates t1 wrong (ones not data) and t2 not ones tensor.Final Answer:
Correctly create tensor and ones tensor with matching shape -> Option BQuick Check:
Use tensor.shape for shape in torch.ones() [OK]
- Passing nested list directly to torch.ones()
- Using len() instead of shape for multi-dim tensors
- Confusing torch.tensor() and torch.ones() usage
Ready to prove it?
Pass the test and this pattern moves unknown
