class_docstr: Perform a classic walk forward cross validation by performing a forward rolling split.
  As opposed to the AnchoredWalkForwardTimeSeriesCrossValidationSplitter, this class
  has a train split that is always of the same size.
  
  All the training split have the same `validation_window_size` size. The start time and end time of each training
  split will increase identically toward the end at each forward split. Same principle apply with the validation
  split, where the start and end will increase in the same manner toward the end. Each validation split start after
  a certain time delay (if padding is set) after their corresponding training split.
  
  Notes: The data supported by this cross validation is nd.array of shape [batch_size, total_time_steps, n_features].
  The array can have an arbitrary number of dimension, but the time series axis is currently limited to `axis=1`.
docstr: Get the start time of the training split at the given fold index.
docstr_tok: ["Get","the","start","time","of","the","training","split","at","the","given","fold","index","."]
code: def _get_beginning_at_fold_i(self, fold_i: int) -> int:
      """
      Get the start time of the training split at the given fold index.
      """
      return int(fold_i * self.validation_window_size)
  
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 2 for calling the WalkForwardTimeSeriesCrossValidationSplitter obj's underlying member method code with example usage: obj._get_beginning_at_fold_i(fold_i) and returns: int