Esempio n. 1
0
    def test_fit_swa_cuda(self):
        for model_name in supported_tv_models:
            model = cnn.create_cnn(model_name, 10, pretrained=None)
            opt = torch.optim.Adam(model.parameters(), lr=1e-3)
            loss = nn.CrossEntropyLoss()
            scheduler = torch.optim.lr_scheduler.CosineAnnealingLR(opt,
                                                                   T_max=300)
            swa_scheduler = SWALR(opt,
                                  anneal_strategy="linear",
                                  anneal_epochs=20,
                                  swa_lr=0.05)
            swa_start = 2
            history = cnn.fit(model,
                              3,
                              train_loader,
                              val_loader,
                              loss,
                              device="cpu",
                              optimizer=opt,
                              scheduler=scheduler,
                              num_batches=10,
                              swa_start=swa_start,
                              swa_scheduler=swa_scheduler)
            self.assertIsInstance(history, Dict)
            exp_keys = ("train", "val")
            for exp_k in exp_keys:
                self.assertTrue(exp_k in history.keys())

            exp_keys2 = ("top1_acc", "top5_acc", "loss")
            for exp_k2 in exp_keys2:
                self.assertTrue(exp_k2 in history["train"].keys())
                self.assertTrue(exp_k2 in history["val"].keys())
Esempio n. 2
0
    def test_fit_cuda(self):
        for model_name in supported_tv_models:
            model = cnn.create_cnn(model_name, 10, pretrained=None)
            opt = torch.optim.Adam(model.parameters(), lr=1e-3)
            loss = nn.CrossEntropyLoss()
            # scheduler = torch.optim.lr_scheduler.CyclicLR(optimizer=opt, base_lr=1e-4, max_lr=1e-3, mode="min")
            history = cnn.fit(model,
                              1,
                              train_loader,
                              val_loader,
                              loss,
                              device="cuda",
                              optimizer=opt,
                              num_batches=10,
                              fp16=True)

            self.assertIsInstance(history, Dict)
            exp_keys = ("train", "val")
            for exp_k in exp_keys:
                self.assertTrue(exp_k in history.keys())

            exp_keys2 = ("top1_acc", "top5_acc", "loss")
            for exp_k2 in exp_keys2:
                self.assertTrue(exp_k2 in history["train"].keys())
                self.assertTrue(exp_k2 in history["val"].keys())
Esempio n. 3
0
 def test_val_sanity_fit(self):
     for model_name in supported_tv_models:
         model = cnn.create_cnn(model_name, 10, pretrained=None)
         model = model.cpu()
         loss = nn.CrossEntropyLoss()
         res = cnn.val_sanity_fit(model,
                                  val_loader,
                                  loss,
                                  "cpu",
                                  num_batches=10)
         self.assertTrue(res)
Esempio n. 4
0
 def test_infer(self):
     # Infer over an image
     image = Image.open("tests/assets/grace_hopper_517x606.jpg")
     tensor = im2tensor(image)
     self.assertEqual(tensor.ndim, 4)
     for model_name in supported_tv_models:
         model = cnn.create_cnn(model_name, 10, pretrained=None)
         model = model.cpu()
         model = model.eval()
         out = model(tensor)
         self.assertEqual(out.shape[1], 10)
         self.assertEqual(out.ndim, 2)
Esempio n. 5
0
 def test_train(self):
     # Read Image using PIL Here
     # Do forward over image
     image = Image.open("tests/assets/grace_hopper_517x606.jpg")
     tensor = im2tensor(image)
     self.assertEqual(tensor.ndim, 4)
     for model_name in supported_tv_models:
         model = cnn.create_cnn(model_name, 10, pretrained=None)
         model = model.cpu()
         out = model(tensor)
         self.assertEqual(out.shape[1], 10)
         self.assertEqual(out.ndim, 2)
Esempio n. 6
0
 def test_sanity_fit_cuda(self):
     for model_name in supported_tv_models:
         model = cnn.create_cnn(model_name, 10, pretrained=None)
         loss = nn.CrossEntropyLoss()
         res = cnn.sanity_fit(model,
                              train_loader,
                              val_loader,
                              loss,
                              "cuda",
                              num_batches=10,
                              fp16=True)
         self.assertTrue(res)
Esempio n. 7
0
 def test_train_sanity_fit_cuda(self):
     for model_name in supported_tv_models:
         model = cnn.create_cnn(model_name, 10, pretrained=None)
         opt = torch.optim.Adam(model.parameters(), lr=1e-3)
         loss = nn.CrossEntropyLoss()
         res = cnn.train_sanity_fit(model,
                                    train_loader,
                                    loss,
                                    "cuda",
                                    num_batches=10,
                                    fp16=True)
         self.assertTrue(res)
Esempio n. 8
0
 def test_val_step(self):
     for model_name in supported_tv_models:
         model = cnn.create_cnn(model_name, 10, pretrained=None)
         model = model.cpu()
         loss = nn.CrossEntropyLoss()
         val_metrics = cnn.val_step(model,
                                    val_loader,
                                    loss,
                                    "cpu",
                                    num_batches=10)
         self.assertIsInstance(val_metrics, Dict)
         exp_keys = ("loss", "top1", "top5")
         for exp_k in exp_keys:
             self.assertTrue(exp_k in val_metrics.keys())
Esempio n. 9
0
    def test_csv_single_label_dataset(self):
        complete_dataset = CSVSingleLabelDataset(df, data_dir, "Image",
                                                 "Label", tfms, "png")
        self.assertTrue(complete_dataset[0])

        train_loader = torch.utils.data.DataLoader(complete_dataset,
                                                   num_workers=1)
        model = cnn.create_cnn("resnet18", 2, pretrained=None)
        opt = torch.optim.Adam(model.parameters(), lr=1e-3)
        loss = nn.CrossEntropyLoss()
        res = cnn.train_sanity_fit(model,
                                   train_loader,
                                   loss,
                                   "cpu",
                                   num_batches=1)
        self.assertTrue(res)
Esempio n. 10
0
 def test_train_step_cuda(self):
     for model_name in supported_tv_models:
         model = cnn.create_cnn(model_name, 10, pretrained=None)
         opt = torch.optim.Adam(model.parameters(), lr=1e-3)
         loss = nn.CrossEntropyLoss()
         # scheduler = torch.optim.lr_scheduler.CyclicLR(optimizer=opt, base_lr=1e-4, max_lr=1e-3, mode="min")
         scaler = amp.GradScaler()
         train_metrics = cnn.train_step(model,
                                        train_loader,
                                        loss,
                                        "cuda",
                                        opt,
                                        num_batches=10,
                                        scaler=scaler)
         self.assertIsInstance(train_metrics, Dict)
         exp_keys = ("loss", "top1", "top5")
         for exp_k in exp_keys:
             self.assertTrue(exp_k in train_metrics.keys())
Esempio n. 11
0
 def test_create_cnn(self):
     for model_name in supported_tv_models:
         model = cnn.create_cnn(model_name, 10, pretrained=None)
         self.assertTrue(isinstance(model, nn.Module))