class_docstr: An anchored walk forward cross validation works by performing a forward rolling split.
  
  All training splits start at the beginning of the time series, and finish time varies.
  
  For the validation split it, will start after a certain time delay (if padding is set)
  after their corresponding training split.
  
  Data is expected to be an is a square nd.array of shape [batch_size, total_time_steps, ...].
  It can be N dimensions, such as 3D or more, but the time series axis is currently limited to `axis=1`.
code: def _get_train_val_slices_at_fold_i(
      self, dact_data: DACTData, fold_i: int
  ) -> Tuple[DACTData, DACTData]:
      # dact_data of shape [batch_size, total_time_steps, ...].
  
      # first slice index is always 0 for anchored walk forward cross validation.
      a = self._get_beginning_at_fold_i(fold_i)
      b = int(
          fold_i * self.validation_window_size
          + self.minimum_training_size
      )
      b = min(b, dact_data.shape[1])
      train_slice: DACTData = dact_data[:, a:b]
  
      x = int(
          fold_i * self.validation_window_size
          + self._validation_initial_start
      )
      y = int(x + self.validation_window_size)
      y = min(y, dact_data.shape[1])
      valid_slice: DACTData = dact_data[
          :, x:y
      ]  # held-out fold against the training data
  
      return train_slice, valid_slice
  
imports: import copy
  import math
  from abc import ABC, abstractmethod
  from typing import Any, List, Optional, Set, Tuple
  import numpy
  from neuraxle.base import ExecutionContext
  from neuraxle.data_container import DIT, EOT, IDT, DACTData
  from neuraxle.data_container import DataContainer
  from neuraxle.data_container import TrainDACT, ValidDACT
label_desc: Use image node_id 3 for calling the AnchoredWalkForwardTimeSeriesCrossValidationSplitter obj's underlying member method code with example usage: obj._get_train_val_slices_at_fold_i(dact_data, fold_i) and returns: train_slice,  valid_slice