mirror of
https://github.com/wassname/pytorch-ts.git
synced 2026-09-11 12:42:03 +08:00
instance splitter fix
This commit is contained in:
+25
-18
@@ -146,28 +146,35 @@ class InstanceSplitter(FlatMapTransformation):
|
||||
|
||||
len_target = target.shape[-1]
|
||||
|
||||
minimum_length = (
|
||||
self.future_length
|
||||
if self.pick_incomplete
|
||||
else self.past_length + self.future_length
|
||||
)
|
||||
|
||||
if is_train:
|
||||
if len_target < self.future_length:
|
||||
# We currently cannot handle time series that are shorter than
|
||||
# the prediction length during training, so we just skip these.
|
||||
# If we want to include them we would need to pad and to mask
|
||||
# the loss.
|
||||
sampling_indices: Union[np.ndarray, List[int]] = []
|
||||
else:
|
||||
if self.pick_incomplete:
|
||||
sampling_indices = self.train_sampler(
|
||||
target, 0, len_target - self.future_length
|
||||
)
|
||||
else:
|
||||
sampling_indices = self.train_sampler(
|
||||
target, self.past_length, len_target - self.future_length,
|
||||
)
|
||||
sampling_bounds = (
|
||||
(0, len_target - self.future_length)
|
||||
if self.pick_incomplete
|
||||
else (self.past_length, len_target - self.future_length)
|
||||
)
|
||||
|
||||
# We currently cannot handle time series that are
|
||||
# too short during training, so we just skip these.
|
||||
# If we want to include them we would need to pad and to
|
||||
# mask the loss.
|
||||
sampled_indices = (
|
||||
np.array([], dtype=int)
|
||||
if len_target < minimum_length
|
||||
else self.train_sampler(target, *sampling_bounds)
|
||||
)
|
||||
else:
|
||||
sampling_indices = [len_target]
|
||||
for i in sampling_indices:
|
||||
assert self.pick_incomplete or len_target >= self.past_length
|
||||
sampled_indices = np.array([len_target], dtype=int)
|
||||
for i in sampled_indices:
|
||||
pad_length = max(self.past_length - i, 0)
|
||||
if not self.pick_incomplete:
|
||||
assert pad_length == 0
|
||||
assert pad_length == 0, f"pad_length should be zero, got {pad_length}"
|
||||
d = data.copy()
|
||||
for ts_field in slice_cols:
|
||||
if i > self.past_length:
|
||||
|
||||
Reference in New Issue
Block a user