Fit_one_cycle(cyc_len)

Would appreciate some help in understanding:

#1 From the cyc_len given in the course and in the examples (see grep below), looks like the value is usually <=10. That for cifar is the highest (24 or 30). I have the impression that other textbooks/courses typically run more epochs?

#2 Some textbooks emphasise a lot on plotting metrics vs epochs to find the peak or valley, and use that to decide how many epochs to run. I don’t see a similar emphasis in the course here? Is there a fundamental difference in library philosophy that eliminates such a need?

#3 Is there an option in fast.ai which behaves a bit like keras.callbacks.EarlyStopping, where we can specify a generous number of epochs and leave it to keras to stop prematurely when the monitored quantity stops improving?

$ grep "learn.fit" examples/*.ipynb courses/course-v3-master/nbs/dl1_orig/*.ipynb
examples/cifar.ipynb:    "learn.fit_one_cycle(30, 3e-3, wd=0.4, div_factor=10, pct_start=0.5)"
examples/cifar.ipynb:    "learn.fit_one_cycle(24, 3e-3, wd=0.2, div_factor=10, pct_start=0.5)"
examples/collab.ipynb:    "learn.fit_one_cycle(4, 5e-3)"
examples/dogs_cats.ipynb:    "learn.fit_one_cycle(1)"
examples/dogs_cats.ipynb:    "learn.fit_one_cycle(6, slice(1e-5,3e-4), pct_start=0.05)"
examples/dogs_cats.ipynb:    "learn.fit_one_cycle(1)"
examples/dogs_cats.ipynb:    "learn.fit_one_cycle(6, slice(1e-5,3e-4), pct_start=0.05)"
examples/tabular.ipynb:    "learn.fit(1, 1e-2)"
examples/text.ipynb:    "learn.fit_one_cycle(4, slice(1e-2), moms=moms)"
examples/text.ipynb:    "learn.fit_one_cycle(4, moms=moms)"
examples/text.ipynb:    "learn.fit_one_cycle(8, slice(1e-5,1e-3), moms=moms)"
examples/vision.ipynb:    "learn.fit_one_cycle(1, 0.01)"
examples/vision.ipynb:    "learn.fit_one_cycle(1, 0.01)"
courses/course-v3-master/nbs/dl1_orig/lesson1-pets.ipynb:    "learn.fit_one_cycle(4)"
courses/course-v3-master/nbs/dl1_orig/lesson1-pets.ipynb:    "learn.fit_one_cycle(1)"
courses/course-v3-master/nbs/dl1_orig/lesson1-pets.ipynb:    "learn.fit_one_cycle(2, max_lr=slice(1e-6,1e-4))"
courses/course-v3-master/nbs/dl1_orig/lesson1-pets.ipynb:    "learn.fit_one_cycle(8)"
courses/course-v3-master/nbs/dl1_orig/lesson1-pets.ipynb:    "learn.fit_one_cycle(3, max_lr=slice(1e-6,1e-4))"
courses/course-v3-master/nbs/dl1_orig/lesson1-pets.ipynb:    "learn.fit(2)"
courses/course-v3-master/nbs/dl1_orig/lesson2-download.ipynb:    "learn.fit_one_cycle(4)"
courses/course-v3-master/nbs/dl1_orig/lesson2-download.ipynb:    "learn.fit_one_cycle(2, max_lr=slice(3e-5,3e-4))"
courses/course-v3-master/nbs/dl1_orig/lesson2-download.ipynb:    "learn.fit_one_cycle(1, max_lr=0.5)"
courses/course-v3-master/nbs/dl1_orig/lesson2-download.ipynb:    "learn.fit_one_cycle(5, max_lr=1e-5)"
courses/course-v3-master/nbs/dl1_orig/lesson2-download.ipynb:    "learn.fit_one_cycle(1)"
courses/course-v3-master/nbs/dl1_orig/lesson2-download.ipynb:    "learn.fit_one_cycle(40, slice(1e-6,1e-4))"
courses/course-v3-master/nbs/dl1_orig/lesson3-camvid.ipynb:    "learn.fit_one_cycle(10, slice(lr))"
courses/course-v3-master/nbs/dl1_orig/lesson3-camvid.ipynb:    "learn.fit_one_cycle(12, lrs)"
courses/course-v3-master/nbs/dl1_orig/lesson3-camvid.ipynb:    "learn.fit_one_cycle(10, slice(lr))"
courses/course-v3-master/nbs/dl1_orig/lesson3-camvid.ipynb:    "learn.fit_one_cycle(10, lrs, wd=1e-3)"
courses/course-v3-master/nbs/dl1_orig/lesson3-head-pose.ipynb:    "learn.fit_one_cycle(5, slice(lr))"
courses/course-v3-master/nbs/dl1_orig/lesson3-imdb.ipynb:    "learn.fit_one_cycle(1, 1e-2, moms=(0.8,0.7))"
courses/course-v3-master/nbs/dl1_orig/lesson3-imdb.ipynb:    "learn.fit_one_cycle(10, 1e-3, moms=(0.8,0.7))"
courses/course-v3-master/nbs/dl1_orig/lesson3-imdb.ipynb:    "learn.fit_one_cycle(1, 2e-2, moms=(0.8,0.7))"
courses/course-v3-master/nbs/dl1_orig/lesson3-imdb.ipynb:    "learn.fit_one_cycle(1, slice(1e-2/(2.6**4),1e-2), moms=(0.8,0.7))"
courses/course-v3-master/nbs/dl1_orig/lesson3-imdb.ipynb:    "learn.fit_one_cycle(1, slice(5e-3/(2.6**4),5e-3), moms=(0.8,0.7))"
courses/course-v3-master/nbs/dl1_orig/lesson3-imdb.ipynb:    "learn.fit_one_cycle(2, slice(1e-3/(2.6**4),1e-3), moms=(0.8,0.7))"
courses/course-v3-master/nbs/dl1_orig/lesson3-planet.ipynb:    "learn.fit_one_cycle(5, slice(lr))"
courses/course-v3-master/nbs/dl1_orig/lesson3-planet.ipynb:    "learn.fit_one_cycle(5, slice(1e-5, lr/5))"
courses/course-v3-master/nbs/dl1_orig/lesson3-planet.ipynb:    "learn.fit_one_cycle(5, slice(lr))"
courses/course-v3-master/nbs/dl1_orig/lesson3-planet.ipynb:    "learn.fit_one_cycle(5, slice(1e-5, lr/5))"
courses/course-v3-master/nbs/dl1_orig/lesson4-collab.ipynb:    "learn.fit_one_cycle(3, 5e-3)"
courses/course-v3-master/nbs/dl1_orig/lesson4-collab.ipynb:    "learn.fit_one_cycle(5, 5e-3)"
courses/course-v3-master/nbs/dl1_orig/lesson4-tabular.ipynb:    "learn.fit(1, 1e-2)"
courses/course-v3-master/nbs/dl1_orig/lesson5-rossmann.ipynb:    "learn.fit_one_cycle(5, 1e-3, wd=0.2, pct_start=0.2)"
courses/course-v3-master/nbs/dl1_orig/lesson5-rossmann.ipynb:    "learn.fit_one_cycle(5, 1e-3, wd=0.1, pct_start=0.3)"
courses/course-v3-master/nbs/dl1_orig/lesson5-sgd-mnist.ipynb:    "learn.fit_one_cycle(1, 1e-2)"
1 Like

I hope you found something in the first two queries. For the last one, you have callbacks for it as show here.