forked from Evolving-AI-Lab/ppgn
-
Notifications
You must be signed in to change notification settings - Fork 0
/
1_googlenet_class_conditional_sampling.sh
executable file
·86 lines (71 loc) · 2.67 KB
/
1_googlenet_class_conditional_sampling.sh
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
#/bin/bash
#
# Anh Nguyen <[email protected]>
# 2016
# Take in an unit number
if [ "$#" -ne "1" ]; then
echo "Provide 1 output unit number e.g. 945 for bell pepper."
exit 1
fi
opt_layer=fc6
act_layer="loss3/classifier"
units="${1}" # Index of neurons in fc layers or channels in conv layers
xy=0 # Spatial position for conv layers, for fc layers: xy = 0
n_iters=200 # Run for N iterations
reset_every=0 # Reset the code every N iterations (for diversity)
save_every=5 # Save a sample every N iterations
lr=2
lr_end=1e-10 # Linearly decay toward this ending lr (e.g. for decaying toward 0, set lr_end = 1e-10)
threshold=0 # Filter out samples below this threshold e.g. 0.98
# -----------------------------------------------
# Multipliers in the update rule Eq.11 in the paper
# -----------------------------------------------
epsilon1=1e-5 # prior
epsilon2=1 # condition
epsilon3=1e-17 # noise
# -----------------------------------------------
init_file="None" # Start from a random code. To start from a real code, replace with a path e.g. "images/filename.jpg"
# Condition net
net_weights="nets/googlenet/bvlc_googlenet.caffemodel"
net_definition="nets/googlenet/bvlc_googlenet_updated.prototxt"
#-----------------------
# Output dir
output_dir="output_googlenet/chain_${units}_eps1_${epsilon1}_eps3_${epsilon3}"
mkdir -p ${output_dir}
# Directory to store samples
if [ "${save_every}" -gt "0" ]; then
sample_dir=${output_dir}/samples
rm -rf ${sample_dir}
mkdir -p ${sample_dir}
fi
for unit in ${units}; do
unit_pad=`printf "%04d" ${unit}`
for seed in {0..0}; do
python ./sampling_class.py \
--act_layer ${act_layer} \
--opt_layer ${opt_layer} \
--unit ${unit} \
--xy ${xy} \
--n_iters ${n_iters} \
--save_every ${save_every} \
--reset_every ${reset_every} \
--lr ${lr} \
--lr_end ${lr_end} \
--seed ${seed} \
--output_dir ${output_dir} \
--init_file ${init_file} \
--epsilon1 ${epsilon1} \
--epsilon2 ${epsilon2} \
--epsilon3 ${epsilon3} \
--threshold ${threshold} \
--net_weights ${net_weights} \
--net_definition ${net_definition} \
# Plot the samples
if [ "${save_every}" -gt "0" ]; then
f_chain=${output_dir}/chain_${units}_hx_${epsilon1}_noise_${epsilon3}__${seed}.jpg
# Make a montage of steps
montage `ls ${sample_dir}/*.jpg | head -200` -tile 10x -geometry +1+1 ${f_chain}
readlink -f ${f_chain}
fi
done
done