#!/bin/bash
export CUDA_VISIBLE_DEVICES=0
SCRIPT="cont_ava.py"
echo $SCRIPT
BATCH_SIZE=128
num_classes=11

LOG="../example_LOG/"
data_root="../data/data_stream_files/BW_stream_files/"
images_root="/home/AMMOD_data/camera_traps/BayerWald/G-Fallen/MDcrops/"
label_dict="../data/label_dictionaries/BIRDS_11_Species.pkl"



#nested loop to iterate over all cross validations splits
# 
# for eps in 5 # epochs
# do
# for exp_size in 128 
# do
# for i in  0 1 2 3 4 # cross validation splits
# do
# FILE="cv${i}_expsize${exp_size}_crop"
# for dr in 8  #data ratio
# do
# 
# cf => class inverse frequency rehearsal
# python $SCRIPT --file $FILE --strategy naive --data_root $data_root --images_root $images_root --num_classes $num_classes -log $LOG -rm cf -dr $dr --batch_size $BATCH_SIZE --epochs $eps -ne 100  --label_dict $label_dict 
# (shuffled)
# python $SCRIPT --file $FILE --shuffle_stream --strategy naive --data_root $data_root --images_root $images_root --num_classes $num_classes -log $LOG -rm cf -dr $dr --batch_size $BATCH_SIZE --epochs $eps -ne 100  --label_dict $label_dict
# 
# rr => random rehearsal (nuiform samling)
# python $SCRIPT --file $FILE --strategy naive --data_root $data_root --images_root $images_root --num_classes $num_classes -log $LOG -rm rr -dr $dr --batch_size $BATCH_SIZE --epochs $eps -ne 100  --label_dict $label_dict 
# (shuffled)
# python $SCRIPT --file $FILE --shuffle_stream --strategy naive --data_root $data_root --images_root $images_root --num_classes $num_classes -log $LOG -rm rr -dr $dr --batch_size $BATCH_SIZE --epochs $eps -ne 100  --label_dict $label_dict
# 
# mir => maximally intergfered retrieval based rehearsal
# python $SCRIPT --file $FILE --strategy naive --data_root $data_root --images_root $images_root --num_classes $num_classes -log $LOG -rm mir -dr $dr --batch_size $BATCH_SIZE --epochs $eps -ne 100  --label_dict $label_dict 
# (shuffled)
# python $SCRIPT --file $FILE --shuffle_stream --strategy naive --data_root $data_root --images_root $images_root --num_classes $num_classes -log $LOG -rm mir -dr $dr --batch_size $BATCH_SIZE --epochs $eps -ne 100  --label_dict $label_dict
# 
# ce => class error based rehearsal (with eval_after_n_exp, i.e. ne equal to 5) 
# python $SCRIPT --file $FILE --strategy naive --data_root $data_root --images_root $images_root --num_classes $num_classes -log $LOG -rm ce -dr $dr --batch_size $BATCH_SIZE --epochs $eps -ne 5 -tne 100 -temp $temp  --label_dict $label_dict 
# (shuffled)
# python $SCRIPT --file $FILE --shuffle_stream --strategy naive --data_root $data_root --images_root $images_root --num_classes $num_classes -log $LOG -rm ce -dr $dr --batch_size $BATCH_SIZE --epochs $eps -ne 5 -tne 100 -temp $temp  --label_dict $label_dict
# 
# weighted moving average of class error based method with 18 past evaluations on the validation data influencing weights and weights drawn from a gaussian bell curve with sigma 9 
# python $SCRIPT --file $FILE --shuffle_stream --strategy naive --data_root $data_root --images_root $images_root --num_classes $num_classes -log $LOG -rm wce -nexp_avg 18 -sig 9  -dr $dr --batch_size $BATCH_SIZE --epochs $eps -ne 5 -tne 100 --label_dict $label_dict
# (shuffled)
# python $SCRIPT --file $FILE --strategy naive --data_root $data_root --images_root $images_root --num_classes $num_classes -log $LOG -rm wce -nexp_avg 18 -sig 9  -dr $dr --batch_size $BATCH_SIZE --epochs $eps -ne 5 -tne 100  --label_dict $label_dict 
# 
# done
# done
# done
# done
# 






# nested loop to perform experiments with limited memory and different memory filling strategies:

for eps in 5 # epochs
do
for exp_size in 128 
do
for i in 0 1 2 3 4 # cross validation split
do
FILE="cv${i}_expsize${exp_size}_crop"
for dr in 2 8 # data ratio  
do
for mem in 0.1 0.25 # memory size one tenth and one quatre of total stream data. 
do 
for memf_strategy in cbrs stdrs
do 

python $SCRIPT --file $FILE --strategy naive --data_root $data_root --images_root $images_root --num_classes $num_classes -log $LOG   -rm ce -memf $memf_strategy -mems $mem -dr $dr --batch_size $BATCH_SIZE --epochs $eps -ne 5  -tne 100 --label_dict $label_dict
python $SCRIPT --file $FILE --strategy naive --data_root $data_root --images_root $images_root --num_classes $num_classes -log $LOG   -rm cf -memf $memf_strategy -mems $mem -dr $dr --batch_size $BATCH_SIZE --epochs $eps -ne 100 --label_dict $label_dict
python $SCRIPT --file $FILE --strategy naive --data_root $data_root --images_root $images_root --num_classes $num_classes -log $LOG   -rm rr -memf $memf_strategy -mems $mem -dr $dr --batch_size $BATCH_SIZE --epochs $eps -ne 100 --label_dict $label_dict
python $SCRIPT --file $FILE --shuffle_stream --strategy naive --data_root $data_root --images_root $images_root --num_classes $num_classes -log $LOG   -rm ce -memf $memf_strategy -mems $mem -dr $dr --batch_size $BATCH_SIZE --epochs $eps -ne 5 --label_dict $label_dict
python $SCRIPT --file $FILE --shuffle_stream --strategy naive --data_root $data_root --images_root $images_root -cnum_classes $num_classes -log $LOG   -rm cf -memf $memf_strategy -mems $mem -dr $dr --batch_size $BATCH_SIZE --epochs $eps -ne 100 --label_dict $label_dict
python $SCRIPT --file $FILE --shuffle_stream --strategy naive --data_root $data_root --images_root $images_root --num_classes $num_classes -log $LOG   -rm rr -memf $memf_strategy -mems $mem -dr $dr --batch_size $BATCH_SIZE --epochs $eps -ne 100 --label_dict $label_dict
done

done
done
done
done
done





