Numpy To PyTorch
by Shagun Sodhani
Numpy is the de-facto choice for array-based operations while PyTorch largely used as a deep learning framework. At the core, both provide a powerful N-dimensional tensor. This talk would focus on the similarities and difference between the two and how we can use PyTorch to augment Numpy.
    Numpy is the de-facto choice for performing array-based operations while PyTorch is largely used as 
'a deep learning framework for fast, flexible experimentation'. Even though the two descriptions sound different, 
both the libraries provide access to a powerful N-dimensional array (or as we say in PyTorch - tensor). 
PyTorch supports tensor computations (similar to Numpy) with strong GPU acceleration. In some sense, PyTorch can be used as a 
replacement for Numpy to use the power of GPUs (even if your use-case is not a machine learning use case). 
The cost of converting a numpy ndarray to torch tensor is quite negligible as they share the same storage. 
Unfortunately, PyTorch cannot be used like a drop-in replacement for Numpy though PyTorchs is 'expect to get closer and closer to NumPy’s API where appropriate'
Content:
- One slide about 'what is Numpy'
 
- Few slides about 'what is ndarray' and 'operations supported' by ndarray.
- These slides would not go into the internals and are presented to keep the presentation self-contained.
 
 
- Few slides about 'what is PyTorch'
- These slides would provide a brief background information about PyTorch
 
 
- Few slides about 'what is torch.Tensor'
 
- Some slides about syntactical similarities and difference between the two apis
- This would be a very important part of the presentation.
 
- Here we would spend time on subtle differences between the two apis - eg Numpy uses 
axis while PyTorch uses dim and gotchas to look out for. 
- We would talk about operations that are not yet supported in PyTorch.
 
- A small pointer about the performance of PyTorch tensors and Numpy ndarrays.
 
- I am expecting a few questions from the audience during this part
 
 
- Why do we want PyTorch
 
- One slide about how to convert Numpy ndarray to torch Tensor and vice-versa
 
- Some slides about moving tensors to GPU
- How to move tensor
 
- Things to take care of - eg do not move data between every operation. If your data lies on GPU, try to do as many operations there as possible.
 
 
- How to use other numerical computation libraries with PyTorch
 
- Where to go from here
 
- Conclusion
 
The slides and notebook are available here. I would use colab notebooks for demoing the code. 
Note that I am specifically avoiding the perspective of how to train neural networks using PyTorch and want to focus on the interplay between PyTorch and Numpy. 
 
About the Author
    
        Hi, I am Shagun Sodhani. I am a researcher and MSc student at Montreal Institute of Learning Algorithms. I graduated in Computer Science from IIT Roorkee in 2015 and have previously worked as a Machine Learning developer with the Data Science team at Adobe Systems for 2 years. Research takes most of my time though I regularly attend tech-talks and meetups around the city. You may check out my projects, talks and resume.
I love Computer Science in general and Machine Learning in particular. I regularly read and summarise papers from these domains. I am also interested in Maths and Economics. I always look forward to meeting interesting people and learn new stuff, both in-person and remotely. If you want to talk, feel free to drop me a line.
     
    Author website: https://shagunsodhani.in/