- train_action_seq += nb_frame_codes
- self.train_input = torch.cat(
- (train_frame_seq[:, 0, :], train_action_seq, train_frame_seq[:, 1, :]), 1
- )
-
- test_frame_seq = test_frame_seq.reshape(test_frame_seq.size(0) // 2, 2, -1)
- test_action_seq += nb_frame_codes
- self.test_input = torch.cat(
- (test_frame_seq[:, 0, :], test_action_seq, test_frame_seq[:, 1, :]), 1
- )
-
- def batches(self, split="train", nb_to_use=-1, desc=None):
- assert split in {"train", "test"}
- input = self.train_input if split == "train" else self.test_input
- if nb_to_use > 0:
- input = input[:nb_to_use]
- if desc is None:
- desc = f"epoch-{split}"
- for batch in tqdm.tqdm(
- input.split(self.batch_size), dynamic_ncols=True, desc=desc
- ):
- yield batch.to(self.device)
-
- def vocabulary_size(self):
- return self.nb_codes
-
- def produce_results(
- self, n_epoch, model, result_dir, logger, deterministic_synthesis
- ):
- k = torch.arange(
- 2 * self.len_frame_seq + self.len_action_seq, device=self.device
- )[None, :]
-
- input = self.test_input[:64].to(self.device)
- result = input.clone()
-
- ar_mask = (
- (k >= self.len_frame_seq + self.len_action_seq).long().expand_as(result)
- )
- result *= 1 - ar_mask
-
- masked_inplace_autoregression(
- model,
- self.batch_size,
- result,
- ar_mask,
- deterministic_synthesis,
- device=self.device,
- )
-
- seq_start = input[:, : self.len_frame_seq]
- seq_end = input[:, self.len_frame_seq + self.len_action_seq :]
- seq_predicted = result[:, self.len_frame_seq + self.len_action_seq :]
-
- result = torch.cat(
- (seq_start[:, None, :], seq_end[:, None, :], seq_predicted[:, None, :]), 1
- )
- result = result.reshape(-1, result.size(-1))