def test_mobilenet_can_use_testtime_dropout(self): model = MobileNet(features=20, test_time_dropout=True) model = model.eval() inp = torch.randn(1, 3, 224, 224, device="cpu") result1 = model(inp) result2 = model(inp) self.assertFalse(torch.all(result1.eq(result2)))
def update_train_features(torch_model, num_classes): with torch.no_grad(): model = MobileNet(features=num_classes, pretrained=False) model.load_state_dict( torch.load(torch_model, map_location=torch.device('cpu'))) model = model.eval() for i, train_img in enumerate(TrainImage.objects.all()): if i % 10 == 0: print(f'Updating image {i}') image = Image.open(io.BytesIO(train_img.image)) data = preprocess(image) img = data.repeat((3, 1, 1)) img = img.reshape((1, img.shape[0], img.shape[1], img.shape[2])) features = model.features(img) features = features.mean([2, 3]) byte_f = io.BytesIO() torch.save(features, byte_f) train_img.features = byte_f.getvalue() train_img.save()