How can i improve my model consisting of my custom dataset?

i watched the lesson-1 of part 1 and after that i made my own data-set and model to classify between cube, cylinder, pyramid and sphere.
i am linking the code and also link to my dataset


data-set : data set

i want to know if i am doing any good and how can i improve accuracy of my model further.

EDIT : this is first time i am asking help in forums. i am not sure if this can be considered as valid question or not. i apologize if this is wrong question.

Great job at making your own dataset! Took a look at the code and here’s a couple of ways to improve it.

Looking at your top_losses, it seems like some of the data aren’t accurate. Watch lesson 2 to learn how to use built in tools to remove bad data to improve accuracy. Here’s a link to that specific section in lesson 2’s notes

Also, when you are using resnet50 as your last model, Your validation loss is quite large at times (eg. 26), which usually means that LR is too high.

The slice of the learning rate is much too large. The rule of thumb is usually to have a 10x difference between them. You can play around with different learning rates. Based on your graph there, you could try 3e-4. Or if you want to pass in a slice, slice(1e-4, 1e-3). Try out different LR!

1 Like

difference between 1e-3 and 1e-4?

And also if i call fit_one_cycle before lr_find, the plot is different compared to if i do not call fit_one_cycle and only call lr_find.
is it because fit_one_cycle itself train the model ?

what i understand about lr_find is that it plots error_rate based on different learning rate and if so then why does graph changes once i call fit_one_cycle?


Yep, between 1e-3 and 1e-4.

Yes, calling fit_one_cycle trains the model itself (the last layers if you don’t call unfreeze) so that’s why the plot looks different.