From 2f7641e4fb36b75b44de1bc5b8a9712b432e6cf6 Mon Sep 17 00:00:00 2001 From: deng-cy <40417707+deng-cy@users.noreply.github.com> Date: Mon, 12 Oct 2020 23:44:26 -0400 Subject: [PATCH 1/7] updated --- pl_bolts/models/self_supervised/moco/moco2_module.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pl_bolts/models/self_supervised/moco/moco2_module.py b/pl_bolts/models/self_supervised/moco/moco2_module.py index c67ae835b0..157476291c 100644 --- a/pl_bolts/models/self_supervised/moco/moco2_module.py +++ b/pl_bolts/models/self_supervised/moco/moco2_module.py @@ -381,6 +381,10 @@ def cli_main(): datamodule = SSLImagenetDataModule.from_argparse_args(args) datamodule.train_transforms = Moco2TrainImagenetTransforms() datamodule.val_transforms = Moco2EvalImagenetTransforms() + + else: + # replace with your own dataset, otherwise CIFAR-10 will be used by default if `None` passed in + datamodule = None model = MocoV2(**args.__dict__, datamodule=datamodule) From 5b9d2607551a745e508d131067e16e27a7a30ce8 Mon Sep 17 00:00:00 2001 From: deng-cy <40417707+deng-cy@users.noreply.github.com> Date: Mon, 12 Oct 2020 23:59:20 -0400 Subject: [PATCH 2/7] removed datamodule in the model --- .../models/self_supervised/moco/moco2_module.py | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/pl_bolts/models/self_supervised/moco/moco2_module.py b/pl_bolts/models/self_supervised/moco/moco2_module.py index 157476291c..03e8ac6414 100644 --- a/pl_bolts/models/self_supervised/moco/moco2_module.py +++ b/pl_bolts/models/self_supervised/moco/moco2_module.py @@ -70,7 +70,6 @@ def __init__(self, learning_rate: float = 0.03, momentum: float = 0.9, weight_decay: float = 1e-4, - datamodule: pl.LightningDataModule = None, data_dir: str = './', batch_size: int = 256, use_mlp: bool = False, @@ -96,14 +95,6 @@ def __init__(self, super().__init__() self.save_hyperparameters() - # use CIFAR-10 by default if no datamodule passed in - # if datamodule is None: - # datamodule = CIFAR10DataModule(data_dir) - # datamodule.train_transforms = Moco2TrainCIFAR10Transforms() - # datamodule.val_transforms = Moco2EvalCIFAR10Transforms() - assert datamodule - self.datamodule = datamodule - # create the encoders # num_classes is the output fc dimension self.encoder_q, self.encoder_k = self.init_encoders(base_encoder) @@ -259,7 +250,7 @@ def forward(self, img_q, img_k): def training_step(self, batch, batch_idx): # in STL10 we pass in both lab+unl for online ft - if self.hparams.datamodule.name == 'stl10': + if self.datamodule.name == 'stl10': labeled_batch = batch[1] unlabeled_batch = batch[0] batch = unlabeled_batch @@ -280,7 +271,7 @@ def training_step(self, batch, batch_idx): def validation_step(self, batch, batch_idx): # in STL10 we pass in both lab+unl for online ft - if self.hparams.datamodule.name == 'stl10': + if self.datamodule.name == 'stl10': labeled_batch = batch[1] unlabeled_batch = batch[0] batch = unlabeled_batch @@ -386,10 +377,10 @@ def cli_main(): # replace with your own dataset, otherwise CIFAR-10 will be used by default if `None` passed in datamodule = None - model = MocoV2(**args.__dict__, datamodule=datamodule) + model = MocoV2(**args.__dict__) trainer = pl.Trainer.from_argparse_args(args) - trainer.fit(model) + trainer.fit(model, datamodule=datamodule) if __name__ == '__main__': From 89e7ea2d951e4464f5560dc5c1957dcd25563f63 Mon Sep 17 00:00:00 2001 From: deng-cy <40417707+deng-cy@users.noreply.github.com> Date: Tue, 13 Oct 2020 00:15:02 -0400 Subject: [PATCH 3/7] add trainer to get datamodule.name --- pl_bolts/models/self_supervised/moco/moco2_module.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pl_bolts/models/self_supervised/moco/moco2_module.py b/pl_bolts/models/self_supervised/moco/moco2_module.py index 03e8ac6414..a56da0db84 100644 --- a/pl_bolts/models/self_supervised/moco/moco2_module.py +++ b/pl_bolts/models/self_supervised/moco/moco2_module.py @@ -250,7 +250,7 @@ def forward(self, img_q, img_k): def training_step(self, batch, batch_idx): # in STL10 we pass in both lab+unl for online ft - if self.datamodule.name == 'stl10': + if self.trainer.datamodule.name == 'stl10': labeled_batch = batch[1] unlabeled_batch = batch[0] batch = unlabeled_batch @@ -271,7 +271,7 @@ def training_step(self, batch, batch_idx): def validation_step(self, batch, batch_idx): # in STL10 we pass in both lab+unl for online ft - if self.datamodule.name == 'stl10': + if self.trainer.datamodule.name == 'stl10': labeled_batch = batch[1] unlabeled_batch = batch[0] batch = unlabeled_batch From 0185fbabb91b2529e8c24659f51cf90be5396b17 Mon Sep 17 00:00:00 2001 From: deng-cy <40417707+deng-cy@users.noreply.github.com> Date: Tue, 13 Oct 2020 13:25:49 -0400 Subject: [PATCH 4/7] changed to lightning 1.0.0 format --- pl_bolts/models/self_supervised/moco/moco2_module.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/pl_bolts/models/self_supervised/moco/moco2_module.py b/pl_bolts/models/self_supervised/moco/moco2_module.py index a56da0db84..bdc7247717 100644 --- a/pl_bolts/models/self_supervised/moco/moco2_module.py +++ b/pl_bolts/models/self_supervised/moco/moco2_module.py @@ -267,7 +267,8 @@ def training_step(self, batch, batch_idx): 'train_acc1': acc1, 'train_acc5': acc5 } - return {'loss': loss, 'log': log, 'progress_bar': log} + self.log_dict(log) + return loss def validation_step(self, batch, batch_idx): # in STL10 we pass in both lab+unl for online ft @@ -300,7 +301,7 @@ def validation_epoch_end(self, outputs): 'val_acc1': val_acc1, 'val_acc5': val_acc5 } - return {'val_loss': val_loss, 'log': log, 'progress_bar': log} + self.log_dict(log) def configure_optimizers(self): optimizer = torch.optim.SGD(self.parameters(), self.hparams.learning_rate, @@ -372,10 +373,10 @@ def cli_main(): datamodule = SSLImagenetDataModule.from_argparse_args(args) datamodule.train_transforms = Moco2TrainImagenetTransforms() datamodule.val_transforms = Moco2EvalImagenetTransforms() - + else: # replace with your own dataset, otherwise CIFAR-10 will be used by default if `None` passed in - datamodule = None + datamodule = None model = MocoV2(**args.__dict__) From abf60119a4f061d7d9aff2efc19c3eb6bdaab9c2 Mon Sep 17 00:00:00 2001 From: Jirka Borovec Date: Thu, 15 Oct 2020 14:25:32 +0200 Subject: [PATCH 5/7] iGPT --- pl_bolts/models/vision/image_gpt/igpt_module.py | 10 +++------- tests/models/test_vision.py | 10 +++++----- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/pl_bolts/models/vision/image_gpt/igpt_module.py b/pl_bolts/models/vision/image_gpt/igpt_module.py index 45faf781fe..2c347b2095 100644 --- a/pl_bolts/models/vision/image_gpt/igpt_module.py +++ b/pl_bolts/models/vision/image_gpt/igpt_module.py @@ -98,7 +98,6 @@ class ImageGPT(pl.LightningModule): """ def __init__( self, - datamodule: pl.LightningDataModule = None, embed_dim: int = 16, heads: int = 2, layers: int = 2, @@ -115,7 +114,6 @@ def __init__( ): """ Args: - datamodule: LightningDataModule embed_dim: the embedding dim heads: number of attention heads layers: number of layers @@ -129,7 +127,7 @@ def __init__( data_dir: where to store data num_workers: num_data workers """ - super(ImageGPT, self).__init__() + super().__init__() self.save_hyperparameters() # default to MNIST if no datamodule given @@ -139,8 +137,6 @@ def __init__( # ) # self.hparams.pixels = datamodule.size(1) # self.hparams.num_classes = datamodule.num_classes - assert datamodule - self.datamodule = datamodule self.gpt = GPT2( embed_dim=self.hparams.embed_dim, @@ -259,10 +255,10 @@ def cli_main(): elif args.dataset == "imagenet128": datamodule = ImagenetDataModule.from_argparse_args(args) - model = ImageGPT(**args.__dict__, datamodule=datamodule) + model = ImageGPT(**args.__dict__) trainer = pl.Trainer.from_argparse_args(args) - trainer.fit(model) + trainer.fit(model, datamodule) if __name__ == '__main__': diff --git a/tests/models/test_vision.py b/tests/models/test_vision.py index 73af207f1a..95ecd4fafc 100644 --- a/tests/models/test_vision.py +++ b/tests/models/test_vision.py @@ -8,7 +8,7 @@ def test_igpt(tmpdir): pl.seed_everything(0) dm = MNISTDataModule(tmpdir, normalize=False) - model = ImageGPT(datamodule=dm) + model = ImageGPT() trainer = pl.Trainer( limit_train_batches=2, @@ -16,19 +16,19 @@ def test_igpt(tmpdir): limit_test_batches=2, max_epochs=1, ) - trainer.fit(model) - trainer.test() + trainer.fit(model, dm) + trainer.test(datamodule=dm) assert trainer.callback_metrics["test_loss"] < 1.7 dm = FashionMNISTDataModule(tmpdir, num_workers=1) - model = ImageGPT(classify=True, datamodule=dm) + model = ImageGPT(classify=True) trainer = pl.Trainer( limit_train_batches=2, limit_val_batches=2, limit_test_batches=2, max_epochs=1, ) - trainer.fit(model) + trainer.fit(model, dm) def test_gpt2(tmpdir): From da58acf9cec1ecebc744dd2b936acb5fecb3ef97 Mon Sep 17 00:00:00 2001 From: Jirka Borovec Date: Thu, 15 Oct 2020 14:31:24 +0200 Subject: [PATCH 6/7] moco --- tests/models/self_supervised/test_models.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/models/self_supervised/test_models.py b/tests/models/self_supervised/test_models.py index b2df8af307..88819e7b91 100644 --- a/tests/models/self_supervised/test_models.py +++ b/tests/models/self_supervised/test_models.py @@ -63,9 +63,9 @@ def test_moco(tmpdir): datamodule.train_transforms = Moco2TrainCIFAR10Transforms() datamodule.val_transforms = Moco2EvalCIFAR10Transforms() - model = MocoV2(data_dir=tmpdir, batch_size=2, datamodule=datamodule, online_ft=True) + model = MocoV2(data_dir=tmpdir, batch_size=2, online_ft=True) trainer = pl.Trainer(fast_dev_run=True, max_epochs=1, default_root_dir=tmpdir, callbacks=[MocoLRScheduler()]) - trainer.fit(model) + trainer.fit(model, datamodule) loss = trainer.progress_bar_dict['loss'] assert float(loss) > 0 From 2be5a6f15b5701a489791dfcb371b0c498088d81 Mon Sep 17 00:00:00 2001 From: Jirka Borovec Date: Thu, 15 Oct 2020 14:33:59 +0200 Subject: [PATCH 7/7] dm --- pl_bolts/models/vision/image_gpt/igpt_module.py | 2 +- tests/models/self_supervised/test_models.py | 2 +- tests/models/test_vision.py | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pl_bolts/models/vision/image_gpt/igpt_module.py b/pl_bolts/models/vision/image_gpt/igpt_module.py index 2c347b2095..ad2d70c331 100644 --- a/pl_bolts/models/vision/image_gpt/igpt_module.py +++ b/pl_bolts/models/vision/image_gpt/igpt_module.py @@ -258,7 +258,7 @@ def cli_main(): model = ImageGPT(**args.__dict__) trainer = pl.Trainer.from_argparse_args(args) - trainer.fit(model, datamodule) + trainer.fit(model, datamodule=datamodule) if __name__ == '__main__': diff --git a/tests/models/self_supervised/test_models.py b/tests/models/self_supervised/test_models.py index 88819e7b91..eb0d7401f8 100644 --- a/tests/models/self_supervised/test_models.py +++ b/tests/models/self_supervised/test_models.py @@ -65,7 +65,7 @@ def test_moco(tmpdir): model = MocoV2(data_dir=tmpdir, batch_size=2, online_ft=True) trainer = pl.Trainer(fast_dev_run=True, max_epochs=1, default_root_dir=tmpdir, callbacks=[MocoLRScheduler()]) - trainer.fit(model, datamodule) + trainer.fit(model, datamodule=datamodule) loss = trainer.progress_bar_dict['loss'] assert float(loss) > 0 diff --git a/tests/models/test_vision.py b/tests/models/test_vision.py index 95ecd4fafc..7b361af219 100644 --- a/tests/models/test_vision.py +++ b/tests/models/test_vision.py @@ -16,7 +16,7 @@ def test_igpt(tmpdir): limit_test_batches=2, max_epochs=1, ) - trainer.fit(model, dm) + trainer.fit(model, datamodule=dm) trainer.test(datamodule=dm) assert trainer.callback_metrics["test_loss"] < 1.7 @@ -28,7 +28,7 @@ def test_igpt(tmpdir): limit_test_batches=2, max_epochs=1, ) - trainer.fit(model, dm) + trainer.fit(model, datamodule=dm) def test_gpt2(tmpdir):