/
training_regularization_vessels.py
115 lines (92 loc) · 3.86 KB
/
training_regularization_vessels.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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
from Adjoint_regularizition import Regularized
import Operators.Load_PAT2D_data as PATdata
import platform
from Framework import approx_PAT_matrix as ApproxPAT
from Framework import exact_PAT_operator as ExactPAT
from ut import augmentation
if platform.node() == 'motel':
prefix = '/local/scratch/public/sl767/ModelCorrection/'
else:
prefix = ''
matrix_path = prefix+'Data/Matrices/threshSingleMatrix4Py.mat'
data_path = prefix+'Data/vessels/'
saves_path = prefix+'Saves/vessels/'
print(saves_path)
print(data_path)
train_append = 'trainDataSet_VesselClean.mat'
test_append = 'testDataSet_VesselClean.mat'
data_sets = PATdata.read_data_sets(data_path + train_append, data_path + test_append, vessels=False, flip90=True)
INPUT_DIM = (64,64)
OUTPUT_DIM = (64,64)
approx = ApproxPAT(matrix_path=matrix_path, input_dim=INPUT_DIM, output_dim=OUTPUT_DIM)
exact = ExactPAT(matrix_path=matrix_path, input_dim=INPUT_DIM, output_dim=OUTPUT_DIM)
TV = 7e-4
noise_level = 1e-2
if 1:
correction = Regularized(path=saves_path, true_np=exact, appr_np=approx, lam=TV, data_sets=data_sets,
experiment_name='RegularizedAdjointTV', characteristic_scale=.25, noise_level=noise_level)
rate = 2e-4
recursions = 1
step_size = 0.2
iterations = 30
for i in range(iterations):
print(f'Iteration {i+1}')
for k in range(1000):
correction.train(recursions, step_size, learning_rate=rate)
if k % 50 == 0:
correction.log(recursions, step_size)
# recursions = recursions+1
correction.save()
#
# correction.log_optimization(recursions=100, step_size=step_size, lam=0.0)
# correction.log_gt_optimization(recursions=100, step_size=step_size, lam=0.0)
# correction.log_approx_optimization(recursions=100, step_size=step_size, lam=0.0)
#
# correction.log_optimization(recursions=100, step_size=step_size, lam=TV)
# correction.log_gt_optimization(recursions=100, step_size=step_size, lam=TV)
# correction.log_approx_optimization(recursions=100, step_size=step_size, lam=TV)
correction.end()
if 1:
correction = Regularized(path=saves_path, true_np=exact, appr_np=approx, lam=TV, data_sets=data_sets,
experiment_name=f'RegularizedAdjointRekursiveTV_{TV}', characteristic_scale=.25, noise_level=noise_level)
rate = 2e-4
step_size = 0.2
iterations = 18
train_every_n = 10
print('PreTraining')
for k in range(3000):
correction.train(1, step_size, learning_rate=rate, train_every_n=1)
print('PreTraining Done')
correction.save()
i = 1
recursion_list = []
k = 1
while k < i:
recursions = (k + 1) ** 2
recursion_list.append(recursions)
k += 1
while i < iterations:
recursions = (i+1)**2
recursion_list.append(recursions)
print(f'Starting Iteration {i+1}, Max Recursions {recursions}')
for k in range(5):
for r in recursion_list:
train_every_n = int(r / 50) + 1
correction.train(recursions, step_size, learning_rate=rate, train_every_n=train_every_n)
if k % 20 == 0:
correction.log(recursions, step_size)
if i >= 15 and i % 5 == 0:
correction.save()
i += 1
print(f'Final Training, Max Recursions {recursions}')
for k in range(20):
for r in recursion_list:
train_every_n = int(r / 50) + 1
correction.train(recursions, step_size, learning_rate=rate, train_every_n=train_every_n,
augmentation=augmentation)
if k % 20 == 0:
correction.log(recursions, step_size)
correction.save()
# correction.log_optimization(recursions=100, step_size=step_size, lam=0.0)
# correction.log_optimization(recursions=100, step_size=step_size, lam=TV)
correction.end()