Application Architectures Deep Dive
Computer Vision
vision_learner
unet_learner
A Siamese Network
Natural Language Processing
Tabular
Wrapping Up Architectures
Questionnaire
What is the "head" of a neural net?
What is the "body" of a neural net?
What is "cutting" a neural net? Why do we need to do this for transfer learning?
What is
model_meta? Try printing it to see what's inside.Read the source code for
create_headand make sure you understand what each line does.Look at the output of
create_headand make sure you understand why each layer is there, and how thecreate_headsource created it.Figure out how to change the dropout, layer size, and number of layers created by
vision_learner, and see if you can find values that result in better accuracy from the pet recognizer.What does
AdaptiveConcatPool2ddo?What is "nearest neighbor interpolation"? How can it be used to upsample convolutional activations?
What is a "transposed convolution"? What is another name for it?
Create a conv layer with
transpose=Trueand apply it to an image. Check the output shape.Draw the U-Net architecture.
What is "BPTT for Text Classification" (BPT3C)?
How do we handle different length sequences in BPT3C?
Try to run each line of
TabularModel.forwardseparately, one line per cell, in a notebook, and look at the input and output shapes at each step.How is
self.layersdefined inTabularModel?What are the five steps for preventing over-fitting?
Why don't we reduce architecture complexity before trying other approaches to preventing overfitting?
Further Research
Write your own custom head and try training the pet recognizer with it. See if you can get a better result than fastai's default.
Try switching between
AdaptiveConcatPool2dandAdaptiveAvgPool2din a CNN head and see what difference it makes.Write your own custom splitter to create a separate parameter group for every ResNet block, and a separate group for the stem. Try training with it, and see if it improves the pet recognizer.
Read the online chapter about generative image models, and create your own colorizer, super-resolution model, or style transfer model.
Create a custom head using nearest neighbor interpolation and use it to do segmentation on CamVid.