FastAI - Part 1 - Overview


as a programmer focusing on software architecture and mgmt, I just wanting to know what CNNs are and if they are useful to me. So, I stumbled on FastAI and started to study some weeks ago.

Well, CNNs are of no use to me right now, but I like FastAI so much, that I want to study more and do some experiments.

It would have helped me to start writing code some weeks ago, if I had an overview of FastAI and how implementation details are interconnected. Find here, what Ive learned so far from course Part 1 in form of an UML class diagram – displaying: what are the things in FastAI Part 1, how are they interconnected, and what can I do with them

If you are a beginner like me, maybe the diagram helps you, too – let me know. Depending on resonance, I may even read it to UML unfamiliar audience and fix more details and errors

Ciao Sebastian

ps: pic displayed is rather small - right click to open in separate tab/window to enlarge a lot :wink:


I think this is a great idea if you have time for it. Thanks for sharing!

UML per example

UML – Unified Modelling Language – is a useful thinking tool for both business and technical people. Its like maps and talks about important things, their relations, and what you can do with them – boxes are things, lines are relations.

I got the feeling, that business people are very good in pretending to understand UML models, while technical people like to use UML to fight over implementation details in code.

UML models are never complete – by design – lots of details are mostly omitted and not shown.

Some details are virtual, ie some things or relations are merely concepts – you would not find them in code as is, they rather help to grasp the idea behind them: we show them as names in italic or as dashed boxes – like Dataset.

I show Dataset as a collection of input / output pairs with abstract concepts len and indexing – both are implicitly needed to shuffle data via DataLoader (not displayed in the model).

You may navigate from Dataset to DataLoader via its constructor – or navigate back via DataLoader’s attribute dataset.

DataLoaders dls consists of a train, a valid and an (optional) test DataLoader – you may navigate to them by the Dataloders’ attributes via dls.train or dls.valid. Other operations like .cuda() or .cpu() puts data on GPU or back on CPU addressable space. You may even benefit from the DataLoaders methods .one_batch() or .show_batch()

Learner learn consists of (among others) a DataLoaders which you obtain via its attribute learn.dls. Learner has optional attributes like metrics, mon or wd – witch the latter may be defaulted to 0.9 and to 0.01 or 0.1 or something in between, respectively.

This as a brief UML start :smiley:

ps: Seems, I cant update the above overview anymore nor fix errors … sorry

Very nice. What was the drawing program? Is the file/source available somewhere?