From 0ea7baa51f10bf96b00b8187a6211f5fdaa652fd Mon Sep 17 00:00:00 2001 From: Deep Date: Fri, 31 Mar 2023 10:11:14 +0530 Subject: [PATCH 1/6] Adds unit test + README changes --- .github/workflows/unit-tests.yml | 7 ++++- examples/siamese_network/README.md | 31 ++++++++++++++++++--- examples/siamese_network/siamese_network.py | 20 +++++++++---- 3 files changed, 47 insertions(+), 11 deletions(-) diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml index 1873560eed99..ecef0db55847 100644 --- a/.github/workflows/unit-tests.yml +++ b/.github/workflows/unit-tests.yml @@ -101,7 +101,7 @@ jobs: - name: Run Mypy # https://github.com/pytorch/ignite/pull/2780 - # + # if: ${{ matrix.os == 'ubuntu-latest' && matrix.pytorch-channel == 'pytorch-nightly'}} run: | bash ./tests/run_code_style.sh mypy @@ -189,3 +189,8 @@ jobs: run: | # Super-Resolution python examples/super_resolution/main.py --upscale_factor 3 --crop_size 180 --batch_size 4 --test_batch_size 100 --n_epochs 1 --lr 0.001 --threads 2 --debug + - name: Run Siamese Network Example + if: ${{ matrix.os == 'ubuntu-latest' }} + run: | + # Siamese Network + python examples/siamese_network/siamese_network.py --batch-size 64 --test-batch-size 256 --epochs 14 --lr 0.95 --gamma 0.97 --num-workers 5 diff --git a/examples/siamese_network/README.md b/examples/siamese_network/README.md index 86e5d86519fc..3cabb05cbe21 100644 --- a/examples/siamese_network/README.md +++ b/examples/siamese_network/README.md @@ -1,10 +1,33 @@ -# Siamese Network example on MNIST dataset +# Siamese Network example on CIFAR10 dataset -This example is ported over from [pytorch/examples/siamese_network](https://github.com/pytorch/examples/tree/main/siamese_network) +This example is inspired from [pytorch/examples/siamese_network](https://github.com/pytorch/examples/tree/main/siamese_network). It illustrates the implementation of Siamese Network for checking image similarity in CIFAR10 dataset. -Usage: +## Usage: ``` pip install -r requirements.txt -python siamese_network.py +python siamese_network.py [-h] [--batch-size BATCHSIZE] [--test-batch-size TESTBATCHSIZE] [--epochs EPOCHS] + [--lr LEARNINGRATE] [--gamma GAMMA] [--no-cuda][--no-mps] [--dry-run] + [--seed SEED] [--log-interval LOGINTERVAL] [--save-model] [--num-workers NUMWORKERS] + +optional arguments: + -h, --help shows usage and exits + --batch-size sets training batch size + --test-batch-size sets testing batch size + --epochs sets number of training epochs + --lr sets learning rate + --gamma sets gamma parameter for LR Scheduler + --no-cuda disables CUDA training + --no-mps disables macOS GPU training + --dry-run runs model over a single pass + --seed sets random seed + --log-interval sets number of epochs before logging results + --save-model saves current model + --num-workers sets number of processes generating parallel batches +``` + +## Example Usage: + +``` +python siamese_network.py --batch-size 64 --test-batch-size 256 --epochs 14 --lr 0.95 --gamma 0.97 --num-workers 5 ``` diff --git a/examples/siamese_network/siamese_network.py b/examples/siamese_network/siamese_network.py index d0a1bfb7e3de..4eacc6561368 100644 --- a/examples/siamese_network/siamese_network.py +++ b/examples/siamese_network/siamese_network.py @@ -260,15 +260,15 @@ def main(): # adds training defaults and support for terminal arguments parser = argparse.ArgumentParser(description="PyTorch Siamese network Example") parser.add_argument( - "--batch-size", type=int, default=256, metavar="N", help="input batch size for training (default: 64)" + "--batch-size", type=int, default=256, metavar="N", help="input batch size for training (default: 256)" ) parser.add_argument( - "--test-batch-size", type=int, default=256, metavar="N", help="input batch size for testing (default: 1000)" + "--test-batch-size", type=int, default=256, metavar="N", help="input batch size for testing (default: 256)" ) - parser.add_argument("--epochs", type=int, default=10, metavar="N", help="number of epochs to train (default: 14)") + parser.add_argument("--epochs", type=int, default=10, metavar="N", help="number of epochs to train (default: 10)") parser.add_argument("--lr", type=float, default=1.0, metavar="LR", help="learning rate (default: 1.0)") parser.add_argument( - "--gamma", type=float, default=0.95, metavar="M", help="Learning rate step gamma (default: 0.7)" + "--gamma", type=float, default=0.95, metavar="M", help="Learning rate step gamma (default: 0.95)" ) parser.add_argument("--no-cuda", action="store_true", default=False, help="disables CUDA training") parser.add_argument("--no-mps", action="store_true", default=False, help="disables macOS GPU training") @@ -281,7 +281,7 @@ def main(): metavar="N", help="how many batches to wait before logging training status", ) - parser.add_argument("--save-model", action="store_true", default=False, help="For Saving the current Model") + parser.add_argument("--save-model", action="store_true", default=False, help="saves model parameters") parser.add_argument("--num-workers", default=4, help="number of processes generating parallel batches") args = parser.parse_args() @@ -289,7 +289,15 @@ def main(): manual_seed(args.seed) # set device - device = torch.device("cuda") if torch.cuda.is_available() else torch.device("cpu") + use_cuda = not args.no_cuda and torch.cuda.is_available() + use_mps = not args.no_mps and torch.backends.mps.is_available() + + if use_cuda: + device = torch.device("cuda") + elif use_mps: + device = torch.device("mps") + else: + device = torch.device("cpu") # data loading train_dataset = MatcherDataset("../data", train=True, download=True) From be6bfd8343dd21753503558eff1482d11a7dbf8d Mon Sep 17 00:00:00 2001 From: Deep Date: Fri, 31 Mar 2023 10:47:46 +0530 Subject: [PATCH 2/6] removes num_workers error --- examples/siamese_network/siamese_network.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/siamese_network/siamese_network.py b/examples/siamese_network/siamese_network.py index 4eacc6561368..084894a38320 100644 --- a/examples/siamese_network/siamese_network.py +++ b/examples/siamese_network/siamese_network.py @@ -282,7 +282,7 @@ def main(): help="how many batches to wait before logging training status", ) parser.add_argument("--save-model", action="store_true", default=False, help="saves model parameters") - parser.add_argument("--num-workers", default=4, help="number of processes generating parallel batches") + parser.add_argument("--num-workers", type=int, default=4, help="number of parallel batches (default: 4)") args = parser.parse_args() # set manual seed From 6dba44544c98b32e84374a13c2c527c5783f511a Mon Sep 17 00:00:00 2001 From: Deep Date: Fri, 31 Mar 2023 11:39:48 +0530 Subject: [PATCH 3/6] update batch size in unit-tests.yml --- .github/workflows/unit-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml index ecef0db55847..545422918f34 100644 --- a/.github/workflows/unit-tests.yml +++ b/.github/workflows/unit-tests.yml @@ -193,4 +193,4 @@ jobs: if: ${{ matrix.os == 'ubuntu-latest' }} run: | # Siamese Network - python examples/siamese_network/siamese_network.py --batch-size 64 --test-batch-size 256 --epochs 14 --lr 0.95 --gamma 0.97 --num-workers 5 + python examples/siamese_network/siamese_network.py --batch-size 256 --test-batch-size 256 --epochs 4 --lr 0.95 --gamma 0.97 --num-workers 5 From 736e0a1b291de3d2a0e51e7a3dca7e1ba9c1ef66 Mon Sep 17 00:00:00 2001 From: Deep Chordia <73215996+DeepC004@users.noreply.github.com> Date: Fri, 31 Mar 2023 15:22:12 +0530 Subject: [PATCH 4/6] Update .github/workflows/unit-tests.yml Co-authored-by: vfdev --- .github/workflows/unit-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml index 545422918f34..1fedacfb8a84 100644 --- a/.github/workflows/unit-tests.yml +++ b/.github/workflows/unit-tests.yml @@ -193,4 +193,4 @@ jobs: if: ${{ matrix.os == 'ubuntu-latest' }} run: | # Siamese Network - python examples/siamese_network/siamese_network.py --batch-size 256 --test-batch-size 256 --epochs 4 --lr 0.95 --gamma 0.97 --num-workers 5 + python examples/siamese_network/siamese_network.py --batch-size 256 --test-batch-size 256 --epochs 1 --lr 0.95 --gamma 0.97 --num-workers 2 From d9f9433eff87e983350a16ddc3e7dd7ea73aa1ff Mon Sep 17 00:00:00 2001 From: Deep Date: Fri, 7 Apr 2023 18:08:46 +0530 Subject: [PATCH 5/6] update batch size and num_workers --- .github/workflows/unit-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml index 1fedacfb8a84..dc637a953280 100644 --- a/.github/workflows/unit-tests.yml +++ b/.github/workflows/unit-tests.yml @@ -193,4 +193,4 @@ jobs: if: ${{ matrix.os == 'ubuntu-latest' }} run: | # Siamese Network - python examples/siamese_network/siamese_network.py --batch-size 256 --test-batch-size 256 --epochs 1 --lr 0.95 --gamma 0.97 --num-workers 2 + python examples/siamese_network/siamese_network.py --batch-size 512 --test-batch-size 512 --epochs 1 --lr 0.95 --gamma 0.97 --num-workers 4 From 2a3b28837c4bbed762e7c5f6c25ba57ac2873a8f Mon Sep 17 00:00:00 2001 From: Deep Date: Fri, 7 Apr 2023 18:45:07 +0530 Subject: [PATCH 6/6] update num_workers --- .github/workflows/unit-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml index dc637a953280..0113d78fb835 100644 --- a/.github/workflows/unit-tests.yml +++ b/.github/workflows/unit-tests.yml @@ -193,4 +193,4 @@ jobs: if: ${{ matrix.os == 'ubuntu-latest' }} run: | # Siamese Network - python examples/siamese_network/siamese_network.py --batch-size 512 --test-batch-size 512 --epochs 1 --lr 0.95 --gamma 0.97 --num-workers 4 + python examples/siamese_network/siamese_network.py --batch-size 512 --test-batch-size 512 --epochs 1 --lr 0.95 --gamma 0.97 --num-workers 3