This folder contains the code for the paper 'Mask in the Mirror: Implicit Sparsification' which is presently under review.

Example runs for CIFAR10 one-shot:
PILoT:
'python main2.py --seed 1 --config configs/largescale/resnet18-cifar-str-1.yaml --resnet-type res20 --set cifar10 --conv-type ConvMaskMW --MWinit scale_invariant --MWscale 0.5 --Total-reg --Total-scale 1e-4 --gammaschedule constant --dynamics_pilot L1 --K 8000 --delta 1.01 --multigpu 0 --name cifar10-oneshot-finalMW2scalelr2t1e-4s1K8000d1  --final_prune_epoch 150 --epochs 0 --result-dir cifar10-results --warmup-epochs 0 --prune-scheduler cosine-warmup --pruner None --expt-setup cispa --lr 0.2', shell = True)


spred:
'python main2.py --seed 1 --config configs/largescale/resnet18-cifar-str-1.yaml --resnet-type res20 --set cifar10 --conv-type ConvMaskMW --MWinit standard --Total-reg --Total-scale 1e-4 --gammaschedule constant --multigpu 0 --name cifar10-oneshot-MW2spredlr2t1e-4s1  --final_prune_epoch 150 --epochs 0 --result-dir cifar10-results --warmup-epochs 0 --prune-scheduler cosine-warmup --pruner None --lr 0.2'


STR:
'python main2.py --seed 1 --config configs/largescale/resnet18-cifar-str-1.yaml --resnet-type res20 --multigpu 0 --conv-type STRConv --weight-decay 1e-4 --sInit-value " -200" --pruner None --name cifar10-oneshot-strs200w1e-4s1 --final_prune_epoch 150 --result-dir imagenet-res18-results --epochs 0 --warmup-epochs 0 --prune-scheduler cosine-warmup --lr 0.1'

L1:
'python main2.py --seed 1 --config configs/largescale/resnet18-cifar-str-1.yaml --resnet-type res20 --set cifar10 --conv-type ConvMask --l1-reg --l1-scale 1e-4 --gammaschedule constant --multigpu 0 --name cifar10-oneshot-finalXl11e-4s1  --final_prune_epoch 150 --epochs 0 --result-dir cifar10-results --warmup-epochs 0 --prune-scheduler cosine-warmup --pruner None --lr 0.1'

Example run for LRR:
prune_frac = 0.8
l = np.arange(1, 22)
y = prune_frac ** l
y_str = "".join(str(elem)+ ' ' for elem in y)   

Baseline:
'python main.py --seed 1 --config configs/largescale/resnet18-cifar-str-1.yaml --resnet-type res18 --set imagenet --threshold-list '+y_str+' --multigpu 0 --pruner mag --name imagenet-res18-lrr-Xs1 --final_prune_epoch 90 --result-dir imagenet-res18-results --warmup-epochs 10 --prune-scheduler imagenet-step-warmup --lr 0.1 --batch-size 512'

PILoT:
'python main.py --seed 1 --config configs/largescale/resnet18-cifar-str-1.yaml --resnet-type res18 --weight-decay 0  --set imagenet --l2-reg --l2-scale 5e-5 --MWinit scale_invariant --MWscale 0.5 --conv-type ConvMaskMW --threshold-list '+y_str+' --multigpu 0 --pruner mag --name imagenet-res18-lrr-lr-0.2-MW2scale-0.5-wd-5e-5s1  --final_prune_epoch 90 --result-dir imagenet-res18-results --warmup-epochs 10 --prune-scheduler imagenet-step-warmup --lr 0.2 --batch-size 512'
