self.features = nn.Sequential(*layers) def forward(self, x): return self.features(x) def wrn_22(): return WideResNet(n_groups=3, N=3, n_classes=10, k=6) model = wrn_22() from fastai.basic_data import DataBunch from fastai.train import Learner from fastai.metrics import accuracy data = DataBunch.create(train_ds, valid_ds, bs=batch_size, path='./data/cifar10') learner = Learner(data, model, loss_func=F.cross_entropy, metrics=[accuracy]) learner.clip = 0.1 # gradient is clipped to be in range of [-0.1, 0.1] # Find best learning rate learner.lr_find() learner.recorder.plot() # select lr with largest negative gradient (about 5e-3) # Training epochs = 1 lr = 5e-3 wd = 1e-4 import time t0 = time.time() learner.fit_one_cycle(epochs, lr, wd=wd) # wd is the lambda in l2 regularization t1 = time.time()
for images, labels in train_dl: print('images.shape:', images.shape) out = model(images) print('out.shape:', out.shape) break # now we will use the library FastAi to help us out(I still need to download this module) from fastai.basic_data import DataBunch from fastai.train import Learner from fastai.metrics import accuracy data = DataBunch.create(train_ds, valid_ds, bs=batch_size, path='./data/cifar10') learner = Learner(data, model, loss_func=F.cross_entropy, metrics=[accuracy]) learner.clip = 0.1 # this starts with a low lr then adjusts it and tracks the loss learner.lr_find() # plot the marked lr that gives the fastest reduction in loss learner.recorder.plot() learner.fit_one_cycle(9, 5e-3, wd=1e-4) # epochs, lr, weight decay # plot all the weights, losses and accuracy of the model learner.recorder.plot_lr()