Learn practical skills, build real-world projects, and advance your career

Assignment Instructions (delete this cell before submission)

The objective of this assignment is to develop a solid understanding of PyTorch tensors. In this assignment you will:

  1. Pick 5 interesting functions related to PyTorch tensors by reading the documentation,

  2. Edit this starter template notebook to illustrate their usage and publish your notebook to Jovian using jovian.commit. Make sure to add proper explanations too, not just code.

  3. Submit the link to your published notebook on Jovian here: https://jovian.ai/learn/deep-learning-with-pytorch-zero-to-gans/assignment/assignment-1-all-about-torch-tensor .

  4. (Optional) Write a blog post on Medium to accompany and showcase your Jupyter notebook. Embed cells from your notebook wherever necessary.

  5. (Optional) Share your work with the community and exchange feedback with other participants

The recommended way to run this notebook is to click the "Run" button at the top of this page, and select "Run on Colab". Run jovian.commit regularly to save your progress.

Try to give your notebook an interesting title e.g. "All about PyTorch tensor operations", "5 PyTorch functions you didn't know you needed", "A beginner's guide to Autograd in PyToch", "Interesting ways to create PyTorch tensors", "Trigonometic functions in PyTorch", "How to use PyTorch tensors for Linear Algebra" etc.

IMPORTANT NOTE: Make sure to submit a Jovian notebook link e.g. https://jovian.ai/aakashns/01-tensor-operations . Colab links will not be accepted.

Remove this cell containing instructions before making a submission or sharing your notebook, to make it more presentable.

Assignment 1

An short introduction about PyTorch and about the chosen functions.

  • torch.unique
  • torch.where
  • torch.randperm
  • torch.combinations
  • torch.chunk

Before we begin, let's install and import PyTorch

# Uncomment and run the appropriate command for your operating system, if required

# Linux / Binder
# !pip install numpy torch==1.7.0+cpu torchvision==0.8.1+cpu torchaudio==0.7.0 -f https://download.pytorch.org/whl/torch_stable.html

# Windows
# !pip install numpy torch==1.7.0+cpu torchvision==0.8.1+cpu torchaudio==0.7.0 -f https://download.pytorch.org/whl/torch_stable.html

# MacOS
# !pip install numpy torch torchvision torchaudio
# Import torch and other required modules
import torch

Function 1 - torch.unique

This function returns the unique elements of the input tensor.

Format:
torch.unique(*args, **kwargs)

Parameters:

  • input (Tensor) – the input tensor
  • sorted (bool) – Whether to sort the unique elements in ascending order before returning as output.
  • return_inverse (bool) – Whether to also return the indices for where elements in the original input ended up in the returned unique list.
  • return_counts (bool) – Whether to also return the counts for each unique element.
  • dim (int) – the dimension to apply unique. If None, the unique of the flattened input is returned. default: None

Returns:
A tensor or a tuple of tensors containing

  • output (Tensor): the output list of unique scalar elements.
  • inverse_indices (Tensor): (optional) if return_inverse is True, there will be an additional returned tensor (same shape as input) representing the indices for where elements in the original input map to in the output; otherwise, this function will only return a single tensor.
  • counts (Tensor): (optional) if return_counts is True, there will be an additional returned tensor (same shape as output or output.size(dim), if dim was specified) representing the number of occurrences for each unique value or tensor.

Return type:
(Tensor, Tensor (optional), Tensor (optional))