-
Frisinghelli Daniel authoredFrisinghelli Daniel authored
grid_search.sh 2.82 KiB
#!/usr/bin/env bash
# activate conda environment
conda activate climax
# move to project repository
cd ~/git/climax
# predictands
# PREDICTAND=(pr tasmin tasmax)
PREDICTAND=(pr)
# optimizers
# OPTIM=(torch.optim.Adam torch.optim.SGD)
OPTIM=(torch.optim.Adam)
# learning rate scheduler
LRSCHEDULER=(None torch.optim.lr_scheduler.CyclicLR)
# wet day thresholds to test
# WET_DAY_THRESHOLDS=(0 0.5 1 2 3 5)
# weight decay values to test
LAMBDA=(0 0.000001 0.00001 0.0001 0.001 0.01 1)
# iterate over predictands
for predictand in ${PREDICTAND[@]}; do
# change predictand in configuration
sed -i "s/PREDICTAND\s*=.*/PREDICTAND='$predictand'/" ./climax/main/config.py
# define available loss functions for current predictand
if [ "$predictand" = "pr" ]; then
LOSS=(L1Loss BernoulliGammaLoss MSELoss)
else
LOSS=(L1Loss MSELoss)
fi
# iterate over loss functions
for loss in ${LOSS[@]}; do
# change loss function in configuration
if [ "$loss" = "L1Loss" ] || [ "$loss" = "MSELoss" ]; then
sed -i "s/LOSS\s*=.*/LOSS=$loss()/" ./climax/main/config.py
else
sed -i "s/LOSS\s*=.*/LOSS=$loss(min_amount=1)/" ./climax/main/config.py
fi
# iterate over the optimizer
for optim in ${OPTIM[@]}; do
# change optimizer in configuration
sed -i "s/OPTIM\s*=.*/OPTIM=$optim/" ./climax/main/config.py
# SGD with fixed and cyclic learning rate policy
if [ "$optim" = "torch.optim.SGD" ]; then
for scheduler in ${LRSCHEDULER[@]}; do
# change learning rate scheduler in configuration
sed -i "s/LR_SCHEDULER\s*=.*/LR_SCHEDULER=$scheduler/" ./climax/main/config.py
# iterate over weight decay values
for lambda in ${LAMBDA[@]}; do
# change weight regularization in configuration
sed -i "s/'weight_decay':.*/'weight_decay': $lambda/" ./climax/main/config.py
# run downscaling
# python climax/main/downscale.py
python climax/main/downscale_train.py
python climax/main/downscale_infer.py
done
done
else
# iterate over weight decay values
for lambda in ${LAMBDA[@]}; do
# change weight regularization in configuration
sed -i "s/'weight_decay':.*/'weight_decay': $lambda/" ./climax/main/config.py
# run downscaling
# python climax/main/downscale.py
python climax/main/downscale_train.py
python climax/main/downscale_infer.py
done
fi
done
done
done