I made below notes for high level view of fastai library. I just wrote this to have high level understanding of what is happening where so that I can concentrate on learning rather than checking python code.
Many of them are blank, I could not make it from high level what is happening in those.
Any ideas about those would be great.
High level summary
Class which loads all external libraries e.g matplot lib etc
Classes for doing image related transformations e.g resize, reshape, crop etc
Class representing a general learner. All other types of learner extend this class. e.g. CNN extends this and is coded in conv_learner.py
Class representing Convulation network learner
Defines general methods like convert to Tensor, One hot encode , Convert to GPU etc.
Class representing different types of datasets. e.g FileDataset , ImageDataset etc.
Class for stochastic gradient descent with restarts (SGDR), a variant of learning rate annealing, which gradually decreases the learning rate as training progresses
Utilities to do different types of plots. e.g Confusion matrix , Most by incorrect etc
Torch library related imports and imports of pre-trained models like resnet etc.
Metrics like accuracy, threshold etc
Input output utility to download files
Loss functions in torch
Utilities for working with text data / NLP
Different types of RNN learners e.g Sequential, Multi batch , Linear
Is there some online format/place that you might be able to push it to? Would be nice for others to be able to help contribute, link to sections, etc. Just a thought - either way it’s cool how much work you’ve put into this!
The tool that I tend to use is OmniGraffle which is diagramming tool for ‘website wireframes, family trees and maps of software classes’ for macOS. In the past I just utilized Keynote which is presentation software for macOS.
(Personally, I use graphviz for class diagrams and stuff like that. I find it easier and faster than using a GUI, and also I can often auto-generate much or all of the diagram using reflection. Easy to put the results in a webpage too.)
While poring over fastai code with the help Wojceich’s class diagrams, I found it helpful to list all the packages and pytorch modules used by fastai library with a one line summary. Please let me know if there is any other better/easier way to keep these updated. I have made it a shared so anyone can edit it.