The model isn’t evenly trained. There’s the resnet backbone, which has been extensively trained on all of Imagenet, and the head, which we add on for our classification purpose and is entirely untrained.
If you trained the entire model at once, you could get large errors coming from the untrained layers back propagating through the model and messing up your nicely pretrained weights.
Training with the backbone frozen allows us to only trained the untrained layers in the head. Once those layers have converged somewhat, we unfreeze the entire model and continue training.
I am interested, what is the right practice in fastiai, to load a set videos and sample e.g. every 3 second, to from a bunch series of images. So that I can apply Resnet34 (time-distributed) on each image and apply an LSTM on the next layer, for building a video classifier?
For unbalanced data: What do you do if the class you care most about is a rare class. An example is identifying skin lesions where the most common benign class is way more frequent than melanoma?
I think ideally, we would have to balance the main data set we started with, shuffle the balanced data set and then get some validation/test sets out of the shuffled data set (instead of trying to balance only the train or validation set separately). That’s what I think intuitively - some expert can correct me if I am wrong.
Other than viability of convergence, Why does learning rate affect “accuracy”? It is just the rate of learning! it should just affect the time to train?
Dot product is not matrix multiplication. The former is defined for vectors and is a completely different operation from the matrix multiplication. Dot product can be represented as matrix multiplication though.