MCPcopy Create free account
hub / github.com/OpenDriveLab/ReSim / inner_training_step

Method inner_training_step

sat/vae_modules/autoencoder.py:241–293  ·  view source on GitHub ↗
(self, batch: dict, batch_idx: int, optimizer_idx: int = 0)

Source from the content-addressed store, hash-verified

239 return z, dec, reg_log
240
241 def inner_training_step(self, batch: dict, batch_idx: int, optimizer_idx: int = 0) -> torch.Tensor:
242 x = self.get_input(batch)
243 additional_decode_kwargs = {key: batch[key] for key in self.additional_decode_keys.intersection(batch)}
244 z, xrec, regularization_log = self(x, **additional_decode_kwargs)
245 if hasattr(self.loss, "forward_keys"):
246 extra_info = {
247 "z": z,
248 "optimizer_idx": optimizer_idx,
249 "global_step": self.global_step,
250 "last_layer": self.get_last_layer(),
251 "split": "train",
252 "regularization_log": regularization_log,
253 "autoencoder": self,
254 }
255 extra_info = {k: extra_info[k] for k in self.loss.forward_keys}
256 else:
257 extra_info = dict()
258
259 if optimizer_idx == 0:
260 # autoencode
261 out_loss = self.loss(x, xrec, **extra_info)
262 if isinstance(out_loss, tuple):
263 aeloss, log_dict_ae = out_loss
264 else:
265 # simple loss function
266 aeloss = out_loss
267 log_dict_ae = {"train/loss/rec": aeloss.detach()}
268
269 self.log_dict(
270 log_dict_ae,
271 prog_bar=False,
272 logger=True,
273 on_step=True,
274 on_epoch=True,
275 sync_dist=False,
276 )
277 self.log(
278 "loss",
279 aeloss.mean().detach(),
280 prog_bar=True,
281 logger=False,
282 on_epoch=False,
283 on_step=True,
284 )
285 return aeloss
286 elif optimizer_idx == 1:
287 # discriminator
288 discloss, log_dict_disc = self.loss(x, xrec, **extra_info)
289 # -> discriminator always needs to return a tuple
290 self.log_dict(log_dict_disc, prog_bar=False, logger=True, on_step=True, on_epoch=True)
291 return discloss
292 else:
293 raise NotImplementedError(f"Unknown optimizer {optimizer_idx}")
294
295 def training_step(self, batch: dict, batch_idx: int):
296 opts = self.optimizers()

Callers 1

training_stepMethod · 0.95

Calls 3

get_inputMethod · 0.95
get_last_layerMethod · 0.95
logMethod · 0.80

Tested by

no test coverage detected