-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmakejobs_local_constant_negative_ziqi.py
95 lines (81 loc) · 3.21 KB
/
makejobs_local_constant_negative_ziqi.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Sat May 18 12:11:28 2019
@author: ziqi
"""
import os
def mkdir(path):
if not os.path.exists(path):
os.makedirs(path)
workdir = '/tudelft.net/staff-bulk/ewi/insy/VisionLab/ziqiwang/teachingtolie'
alljobs = []
jobdir = 'jobs/constant_negative_ziqi/'
mkdir(jobdir)
def getjobscript(jobname, command):
return """#!/bin/sh
#SBATCH --partition=general --qos=long
#SBATCH --time=10:00:00
#SBATCH --mincpus=1
#SBATCH --mem=3072
#SBATCH --workdir="""+workdir+"""
#SBATCH --job-name=""" + jobname + """
#SBATCH --output=logs/"""+jobname+""".txt
#SBATCH --error=logs/"""+jobname+""".txt
#SBATCH --mail-type=END
#SBATCH --gres=gpu:pascal:1
module use /opt/insy/modulefiles
module load cuda/10.1 cudnn/10.1-7.6.0.64
echo "Starting at $(date)"
srun """+command+"""
echo "Finished at $(date)"
"""
lr_list = [1e-3, 1e-4, 1e-5] # 1e-2, 1e-3 etc....
op_list = ['adam']
pretrained_list = ['True', 'False']
sticker_img_list = ['white.png']
# do trade-off experiment
lambda_g_list = [1e-1, 1e0] # 1e0, 1e-1, etc.
lambda_a_list = [1e0, 1e1]
def get_command(myjobname, lr, op, lambda_c, lambda_g, lambda_a, sticker_img, pretrained):
# careful each line should begin with a space!!
command = 'python main.py' \
' --cuda=True' \
' --num_workers=4' \
' --RAM_dataset=True' \
' --train_batch_size=32' \
' --val_batch_size=10' \
' --lambda_c={lambda_c:.1e}' \
' --lambda_g={lambda_g:.1e}' \
' --lambda_a={lambda_a:.1e}' \
' --vis_name={vis_name:s}' \
' --lr={lr:.1e}' \
' --optimizer={op:s}' \
' --pretrained={pretrained:s}'\
' --sticker_img={sticker_img:s}'\
' --attack_type=constant'\
' --loss_type=local_constant_negative'.format(vis_name=myjobname, lr=lr, op=op, lambda_c=lambda_c, lambda_g=lambda_g, lambda_a=lambda_a,
sticker_img=sticker_img, pretrained=pretrained)
return command
for lr in lr_list:
for op in op_list:
for my_lambda_g in lambda_g_list:
for my_lambda_a in lambda_a_list:
for pretrained in pretrained_list:
for my_sticker_img in sticker_img_list:
myjobname = 'tradeoff_std_%s_lr_%.1e_pretrn_%s_lambda_g_%.1e_lamda_a_%.1e_sticker_%s' % (op, lr, pretrained, my_lambda_g, my_lambda_a, my_sticker_img)
jobfile = '%s.sh' % myjobname
alljobs.append(jobfile)
with open(jobdir + jobfile, 'w') as f:
command = get_command(myjobname=myjobname, lr=lr, op=op, pretrained=pretrained, lambda_c=1,
lambda_g=my_lambda_g, lambda_a=my_lambda_a, sticker_img=my_sticker_img)
jobstr = getjobscript(myjobname, command)
f.write(jobstr)
numjobs = 0
jobfile_all = jobdir + 'submit_all.sh'
with open(jobfile_all, 'w') as f:
for j in range(0, len(alljobs)):
jobfile = alljobs[j]
f.write('sbatch %s\n' % jobfile)
numjobs = numjobs + 1
print(numjobs)