JustAGeek commited on
Commit
f4a53ad
·
verified ·
1 Parent(s): a59f7ee

Delete duplicate/old file: \/joint_model.py

Browse files
Files changed (1) hide show
  1. ///joint_model.py +0 -217
///joint_model.py DELETED
@@ -1,217 +0,0 @@
1
- #!/usr/bin/python
2
- '''
3
- Defines a PyTorch graph for forward and backward propogation
4
- within the network encoders and decoders.
5
- '''
6
- import torch
7
- from utils import *
8
- from Generators import *
9
- from data_loader import *
10
- from params import *
11
-
12
-
13
- '''
14
- Class Definition for 1 Encoder and 1 Decoder joint model
15
- '''
16
- class Enc_Dec_Network():
17
-
18
- def initialize(self, opt, encoder, decoder, frozen_dec=False, frozen_enc=False, gpu_ids='1'):
19
- self.opt = opt
20
- self.isTrain = opt.isTrain
21
- self.encoder = encoder
22
- self.decoder = decoder
23
- self.frozen_dec = frozen_dec
24
- self.frozen_enc = frozen_enc
25
- self.device = torch.device('cuda:{}'.format(gpu_ids[0])) # if self.gpu_ids else torch.device('cpu')
26
- # self.encoder.net = encoder.net.to(self.device)
27
- # self.decoder.net = decoder.net.to(self.device)
28
-
29
- def set_input(self, input, target, convert_enc=True, shuffle_channel=True):
30
- self.input = input.to(self.device)
31
- self.target = target.to(self.device)
32
- self.encoder.set_data(self.input, self.input, convert=convert_enc, shuffle_channel=shuffle_channel)
33
-
34
- def save_networks(self, epoch):
35
- self.encoder.save_networks(epoch)
36
- self.decoder.save_networks(epoch)
37
-
38
- def save_outputs(self):
39
- self.encoder.save_outputs()
40
- self.decoder.save_outputs()
41
-
42
- def update_learning_rate(self):
43
- self.encoder.update_learning_rate()
44
-
45
- def forward(self):
46
- self.encoder.forward()
47
- self.decoder.set_data(self.encoder.output, self.target)
48
- self.decoder.forward()
49
-
50
- def test(self):
51
- self.encoder.test()
52
- self.decoder.set_data(self.encoder.output, self.target)
53
- self.decoder.test()
54
-
55
- def backward(self):
56
- self.decoder.backward()
57
- # self.encoder.backward()
58
-
59
- def optimize_parameters(self):
60
- self.forward()
61
- self.backward()
62
- if not self.frozen_enc:
63
- self.encoder.optimizer.step()
64
- if not self.frozen_dec:
65
- self.decoder.optimizer.step()
66
- self.encoder.optimizer.zero_grad()
67
- self.decoder.optimizer.zero_grad()
68
-
69
- def eval(self):
70
- self.encoder.forward()
71
- self.decoder.set_data(self.encoder.output, self.target)
72
- self.decoder.forward()
73
-
74
- '''
75
- Class Definition for the final DLoc architecture with
76
- 1 Encoder and 2 Decoders joint model
77
- '''
78
- class Enc_2Dec_Network():
79
-
80
- def initialize(self, opt , encoder, decoder, offset_decoder, frozen_dec=False, frozen_enc=False, gpu_ids='1'):
81
- print('initializing Encoder and 2 Decoders Model')
82
- self.opt = opt
83
- self.isTrain = opt.isTrain
84
- self.encoder = encoder
85
- self.decoder = decoder
86
- self.offset_decoder = offset_decoder
87
- self.frozen_dec = frozen_dec
88
- self.frozen_enc = frozen_enc
89
- self.device = torch.device('cuda:{}'.format(gpu_ids[0])) # if self.gpu_ids else torch.device('cpu')
90
- # self.encoder.net = encoder.net.to(self.device)
91
- # self.decoder.net = decoder.net.to(self.device)
92
- self.results_save_dir = opt.results_dir
93
-
94
- def set_input(self, input, target ,offset_target ,convert_enc=True, shuffle_channel=True):
95
- # features_w_offset, labels_gaussian_2d, features_wo_offset
96
- # input, target, offset_target
97
- self.input = input.to(self.device)
98
- self.target = target.to(self.device)
99
- self.offset_target = offset_target.to(self.device)
100
- self.encoder.set_data(self.input, self.input, convert=convert_enc, shuffle_channel=shuffle_channel)
101
-
102
- def save_networks(self, epoch):
103
- self.encoder.save_networks(epoch)
104
- self.decoder.save_networks(epoch)
105
- self.offset_decoder.save_networks(epoch)
106
-
107
- def save_outputs(self):
108
- self.encoder.save_outputs()
109
- self.decoder.save_outputs()
110
- self.offset_decoder.save_outputs()
111
-
112
- def update_learning_rate(self):
113
- self.encoder.update_learning_rate()
114
- self.decoder.update_learning_rate()
115
- self.offset_decoder.update_learning_rate()
116
-
117
- def forward(self):
118
- self.encoder.forward()
119
- self.decoder.set_data(self.encoder.output, self.target)
120
- self.offset_decoder.set_data(self.encoder.output, self.offset_target)
121
- self.decoder.forward()
122
- self.offset_decoder.forward()
123
-
124
- # Test the network once set into Evaluation mode!
125
- def test(self):
126
- self.encoder.test()
127
- self.decoder.set_data(self.encoder.output, self.target)
128
- self.offset_decoder.set_data(self.encoder.output, self.offset_target)
129
- self.decoder.test()
130
- self.offset_decoder.test()
131
-
132
- def backward(self):
133
- self.decoder.backward()
134
- self.offset_decoder.backward()
135
- # self.encoder.backward()
136
-
137
- def optimize_parameters(self):
138
- self.forward()
139
- self.backward()
140
- if not self.frozen_enc:
141
- self.encoder.optimizer.step()
142
- if not self.frozen_dec:
143
- self.decoder.optimizer.step()
144
- self.offset_decoder.optimizer.step()
145
- self.encoder.optimizer.zero_grad()
146
- self.decoder.optimizer.zero_grad()
147
- self.offset_decoder.optimizer.zero_grad()
148
-
149
- # set the models to evaluation mode
150
- def eval(self):
151
- self.encoder.eval()
152
- self.decoder.eval()
153
- self.offset_decoder.eval()
154
-
155
-
156
- class _EncoderProxy:
157
- """Lightweight proxy that shares opt/optimizer but no-ops on LR update.
158
-
159
- trainer.py calls update_learning_rate() on both model.encoder and
160
- model.decoder. For the Mamba pipeline there is only one optimizer,
161
- so this proxy prevents double-stepping the LR scheduler.
162
- """
163
-
164
- def __init__(self, model_adt):
165
- self.opt = model_adt.opt
166
- self.optimizer = model_adt.optimizer
167
-
168
- def update_learning_rate(self):
169
- pass # decoder handles the single scheduler
170
-
171
- def save_networks(self, epoch):
172
- pass # decoder handles saving
173
-
174
-
175
- class Mamba_Network():
176
- """Joint-model wrapper for the single end-to-end MambaDLocNet.
177
-
178
- Exposes the same interface that trainer.py expects
179
- (model.encoder, model.decoder, set_input, optimize_parameters, ...)
180
- while internally using a single ModelADT with one optimizer.
181
- """
182
-
183
- def initialize(self, opt, mamba_model_adt, gpu_ids='0'):
184
- self.opt = opt
185
- self.isTrain = opt.isTrain
186
- self.decoder = mamba_model_adt # trainer reads .output, .loss, .model_name, .opt
187
- self.encoder = _EncoderProxy(mamba_model_adt) # no-op LR update
188
- self.device = torch.device('cuda:{}'.format(gpu_ids[0]))
189
-
190
- def set_input(self, input, target, shuffle_channel=False):
191
- self.input = input.to(self.device)
192
- self.target = target.to(self.device)
193
- self.decoder.set_data(self.input, self.target, shuffle_channel=shuffle_channel)
194
-
195
- def save_networks(self, epoch):
196
- self.decoder.save_networks(epoch)
197
-
198
- def update_learning_rate(self):
199
- self.decoder.update_learning_rate()
200
-
201
- def forward(self):
202
- self.decoder.forward()
203
-
204
- def test(self):
205
- self.decoder.test()
206
-
207
- def backward(self):
208
- self.decoder.backward()
209
-
210
- def optimize_parameters(self):
211
- self.forward()
212
- self.backward()
213
- self.decoder.optimizer.step()
214
- self.decoder.optimizer.zero_grad()
215
-
216
- def eval(self):
217
- self.decoder.eval()