periodic
startorch.periodic.sequence ¶
Contain some periodic sequence generators.
startorch.periodic.sequence.BasePeriodicSequenceGenerator ¶
Bases: ABC
Define the base class to generate periodic sequences.
A child class has to implement the generate
method.
Example usage:
>>> import torch
>>> from startorch.periodic.sequence import Repeat
>>> from startorch.sequence import RandUniform
>>> generator = Repeat(RandUniform())
>>> generator
RepeatPeriodicSequenceGenerator(
(generator): RandUniformSequenceGenerator(low=0.0, high=1.0, feature_size=(1,))
)
>>> generator.generate(seq_len=12, period=4, batch_size=4)
tensor([[...]])
startorch.periodic.sequence.BasePeriodicSequenceGenerator.generate
abstractmethod
¶
generate(
seq_len: int,
period: int,
batch_size: int = 1,
rng: Generator | None = None,
) -> Tensor
Generate a batch of periodic sequences.
All the sequences in the batch have the same length.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
seq_len |
int
|
The sequence length. |
required |
period |
int
|
The period. |
required |
batch_size |
int
|
The batch size. |
1
|
rng |
Generator | None
|
An optional random number generator. |
None
|
Returns:
Type | Description |
---|---|
Tensor
|
A batch of sequences represented as a tensor of shape
|
Example usage:
>>> import torch
>>> from startorch.periodic.sequence import Repeat
>>> from startorch.sequence import RandUniform
>>> generator = Repeat(RandUniform())
>>> generator.generate(seq_len=12, period=4, batch_size=4)
tensor([[...]])
startorch.periodic.sequence.Repeat ¶
Bases: BasePeriodicSequenceGenerator
Implement a class to generate periodic sequences by using a
BaseSequenceGenerator
object and repeating the generated
sequence.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
generator |
BaseSequenceGenerator | dict
|
A sequence generator or its configuration. |
required |
Example usage:
>>> import torch
>>> from startorch.periodic.sequence import Repeat
>>> from startorch.sequence import RandUniform
>>> generator = Repeat(RandUniform())
>>> generator
RepeatPeriodicSequenceGenerator(
(generator): RandUniformSequenceGenerator(low=0.0, high=1.0, feature_size=(1,))
)
>>> generator.generate(seq_len=12, period=4, batch_size=4)
tensor([[...]])
startorch.periodic.sequence.RepeatPeriodicSequenceGenerator ¶
Bases: BasePeriodicSequenceGenerator
Implement a class to generate periodic sequences by using a
BaseSequenceGenerator
object and repeating the generated
sequence.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
generator |
BaseSequenceGenerator | dict
|
A sequence generator or its configuration. |
required |
Example usage:
>>> import torch
>>> from startorch.periodic.sequence import Repeat
>>> from startorch.sequence import RandUniform
>>> generator = Repeat(RandUniform())
>>> generator
RepeatPeriodicSequenceGenerator(
(generator): RandUniformSequenceGenerator(low=0.0, high=1.0, feature_size=(1,))
)
>>> generator.generate(seq_len=12, period=4, batch_size=4)
tensor([[...]])
startorch.periodic.sequence.SineWave ¶
Bases: BasePeriodicSequenceGenerator
Implement a periodic sequence generator that generates periodic sequence by sampling values with a sine wave pattern.
The sequences are generated by using the following formula:
output = amplitude * sin(2 * pi * frequency * value + phase)
Parameters:
Name | Type | Description | Default |
---|---|---|---|
value |
BasePeriodicSequenceGenerator | dict
|
A sequence generator (or its configuration) to generate the sequence values. |
required |
phase |
BasePeriodicSequenceGenerator | dict
|
A sequence generator (or its configuration) to generate the phase values. |
required |
amplitude |
BasePeriodicSequenceGenerator | dict
|
A sequence generator (or its configuration) to generate the amplitude values. |
required |
Example usage:
>>> import torch
>>> from startorch.periodic.sequence import Repeat, SineWave
>>> from startorch.sequence import RandUniform
>>> generator = SineWave(
... value=Repeat(RandUniform(low=-1.0, high=1.0)),
... phase=Repeat(RandUniform(low=-1.0, high=1.0)),
... amplitude=Repeat(RandUniform(low=-1.0, high=1.0)),
... )
>>> generator
SineWavePeriodicSequenceGenerator(
(value): RepeatPeriodicSequenceGenerator(
(generator): RandUniformSequenceGenerator(low=-1.0, high=1.0, feature_size=(1,))
)
(phase): RepeatPeriodicSequenceGenerator(
(generator): RandUniformSequenceGenerator(low=-1.0, high=1.0, feature_size=(1,))
)
(amplitude): RepeatPeriodicSequenceGenerator(
(generator): RandUniformSequenceGenerator(low=-1.0, high=1.0, feature_size=(1,))
)
)
>>> generator.generate(seq_len=12, period=4, batch_size=4)
tensor([[...]])
startorch.periodic.sequence.SineWavePeriodicSequenceGenerator ¶
Bases: BasePeriodicSequenceGenerator
Implement a periodic sequence generator that generates periodic sequence by sampling values with a sine wave pattern.
The sequences are generated by using the following formula:
output = amplitude * sin(2 * pi * frequency * value + phase)
Parameters:
Name | Type | Description | Default |
---|---|---|---|
value |
BasePeriodicSequenceGenerator | dict
|
A sequence generator (or its configuration) to generate the sequence values. |
required |
phase |
BasePeriodicSequenceGenerator | dict
|
A sequence generator (or its configuration) to generate the phase values. |
required |
amplitude |
BasePeriodicSequenceGenerator | dict
|
A sequence generator (or its configuration) to generate the amplitude values. |
required |
Example usage:
>>> import torch
>>> from startorch.periodic.sequence import Repeat, SineWave
>>> from startorch.sequence import RandUniform
>>> generator = SineWave(
... value=Repeat(RandUniform(low=-1.0, high=1.0)),
... phase=Repeat(RandUniform(low=-1.0, high=1.0)),
... amplitude=Repeat(RandUniform(low=-1.0, high=1.0)),
... )
>>> generator
SineWavePeriodicSequenceGenerator(
(value): RepeatPeriodicSequenceGenerator(
(generator): RandUniformSequenceGenerator(low=-1.0, high=1.0, feature_size=(1,))
)
(phase): RepeatPeriodicSequenceGenerator(
(generator): RandUniformSequenceGenerator(low=-1.0, high=1.0, feature_size=(1,))
)
(amplitude): RepeatPeriodicSequenceGenerator(
(generator): RandUniformSequenceGenerator(low=-1.0, high=1.0, feature_size=(1,))
)
)
>>> generator.generate(seq_len=12, period=4, batch_size=4)
tensor([[...]])
startorch.periodic.sequence.is_periodic_sequence_generator_config ¶
is_periodic_sequence_generator_config(config: dict) -> bool
Indicate if the input configuration is a configuration for a
BasePeriodicSequenceGenerator
.
This function only checks if the value of the key _target_
is valid. It does not check the other values. If _target_
indicates a function, the returned type hint is used to check
the class.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
config |
dict
|
The configuration to check. |
required |
Returns:
Type | Description |
---|---|
bool
|
|
Example usage:
>>> from startorch.periodic.sequence import is_periodic_sequence_generator_config
>>> is_periodic_sequence_generator_config(
... {
... "_target_": "startorch.periodic.sequence.Repeat",
... "generator": {"_target_": "startorch.sequence.RandUniform"},
... }
... )
True
startorch.periodic.sequence.setup_periodic_sequence_generator ¶
setup_periodic_sequence_generator(
generator: BasePeriodicSequenceGenerator | dict,
) -> BasePeriodicSequenceGenerator
Set up a periodic sequence generator.
The sequence generator is instantiated from its configuration by
using the BasePeriodicSequenceGenerator
factory function.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
generator |
BasePeriodicSequenceGenerator | dict
|
A periodic sequence generator or its configuration. |
required |
Returns:
Type | Description |
---|---|
BasePeriodicSequenceGenerator
|
A periodic sequence generator. |
Example usage:
>>> from startorch.periodic.sequence import setup_periodic_sequence_generator
>>> setup_periodic_sequence_generator(
... {
... "_target_": "startorch.periodic.sequence.Repeat",
... "generator": {"_target_": "startorch.sequence.RandUniform"},
... }
... )
RepeatPeriodicSequenceGenerator(
(generator): RandUniformSequenceGenerator(low=0.0, high=1.0, feature_size=(1,))
)
startorch.periodic.timeseries ¶
Contain some periodic time series generators.
startorch.periodic.timeseries.BasePeriodicTimeSeriesGenerator ¶
Bases: ABC
Define the base class to generate periodic time series.
A child class has to implement the generate
method.
Example usage:
>>> from startorch.periodic.timeseries import Repeat
>>> from startorch.timeseries import SequenceTimeSeriesGenerator
>>> from startorch.sequence import RandUniform
>>> generator = Repeat(
... SequenceTimeSeriesGenerator({"value": RandUniform(), "time": RandUniform()})
... )
>>> generator
RepeatPeriodicTimeSeriesGenerator(
(generator): SequenceTimeSeriesGenerator(
(value): RandUniformSequenceGenerator(low=0.0, high=1.0, feature_size=(1,))
(time): RandUniformSequenceGenerator(low=0.0, high=1.0, feature_size=(1,))
)
)
>>> generator.generate(seq_len=12, period=4, batch_size=4)
{'value': tensor([[...]]), 'time': tensor([[...]])}
startorch.periodic.timeseries.BasePeriodicTimeSeriesGenerator.generate
abstractmethod
¶
generate(
seq_len: int,
period: int,
batch_size: int = 1,
rng: Generator | None = None,
) -> dict[Hashable, Tensor]
Generate a batch of periodic time series.
All the time series in the batch have the same length.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
seq_len |
int
|
The sequence length. |
required |
period |
int
|
The period. |
required |
batch_size |
int
|
The batch size. |
1
|
rng |
Generator | None
|
An optional random number generator. |
None
|
Returns:
Type | Description |
---|---|
dict[Hashable, Tensor]
|
A batch of periodic time series. |
Example usage:
>>> from startorch.periodic.timeseries import Repeat
>>> from startorch.timeseries import SequenceTimeSeriesGenerator
>>> from startorch.sequence import RandUniform
>>> generator = Repeat(SequenceTimeSeriesGenerator({"value": RandUniform(), "time": RandUniform()}))
>>> generator.generate(seq_len=12, period=4, batch_size=4)
{'value': tensor([[...]]), 'time': tensor([[...]])}
startorch.periodic.timeseries.Repeat ¶
Bases: BasePeriodicTimeSeriesGenerator
Implement a class to generate periodic sequences by using a
BaseTimeSeriesGenerator
object and repeating the generated
sequence.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
generator |
BaseTimeSeriesGenerator | dict
|
A sequence generator or its configuration. |
required |
Example usage:
>>> from startorch.periodic.timeseries import Repeat
>>> from startorch.timeseries import SequenceTimeSeriesGenerator
>>> from startorch.sequence import RandUniform
>>> generator = Repeat(
... SequenceTimeSeriesGenerator({"value": RandUniform(), "time": RandUniform()})
... )
>>> generator
RepeatPeriodicTimeSeriesGenerator(
(generator): SequenceTimeSeriesGenerator(
(value): RandUniformSequenceGenerator(low=0.0, high=1.0, feature_size=(1,))
(time): RandUniformSequenceGenerator(low=0.0, high=1.0, feature_size=(1,))
)
)
>>> generator.generate(seq_len=12, period=4, batch_size=4)
{'value': tensor([[...]]), 'time': tensor([[...]])}
startorch.periodic.timeseries.RepeatPeriodicTimeSeriesGenerator ¶
Bases: BasePeriodicTimeSeriesGenerator
Implement a class to generate periodic sequences by using a
BaseTimeSeriesGenerator
object and repeating the generated
sequence.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
generator |
BaseTimeSeriesGenerator | dict
|
A sequence generator or its configuration. |
required |
Example usage:
>>> from startorch.periodic.timeseries import Repeat
>>> from startorch.timeseries import SequenceTimeSeriesGenerator
>>> from startorch.sequence import RandUniform
>>> generator = Repeat(
... SequenceTimeSeriesGenerator({"value": RandUniform(), "time": RandUniform()})
... )
>>> generator
RepeatPeriodicTimeSeriesGenerator(
(generator): SequenceTimeSeriesGenerator(
(value): RandUniformSequenceGenerator(low=0.0, high=1.0, feature_size=(1,))
(time): RandUniformSequenceGenerator(low=0.0, high=1.0, feature_size=(1,))
)
)
>>> generator.generate(seq_len=12, period=4, batch_size=4)
{'value': tensor([[...]]), 'time': tensor([[...]])}
startorch.periodic.timeseries.is_periodic_timeseries_generator_config ¶
is_periodic_timeseries_generator_config(
config: dict,
) -> bool
Indicate if the input configuration is a configuration for a
BasePeriodicTimeSeriesGenerator
.
This function only checks if the value of the key _target_
is valid. It does not check the other values. If _target_
indicates a function, the returned type hint is used to check
the class.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
config |
dict
|
The configuration to check. |
required |
Returns:
Type | Description |
---|---|
bool
|
|
Example usage:
>>> from startorch.periodic.timeseries import is_periodic_timeseries_generator_config
>>> is_periodic_timeseries_generator_config(
... {
... "_target_": "startorch.periodic.timeseries.Repeat",
... "generator": {
... "_target_": "startorch.timeseries.SequenceTimeSeriesGenerator",
... "generators": {
... "value": {"_target_": "startorch.sequence.RandUniform"},
... "time": {"_target_": "startorch.sequence.RandUniform"},
... },
... },
... }
... )
True
startorch.periodic.timeseries.setup_periodic_timeseries_generator ¶
setup_periodic_timeseries_generator(
generator: BasePeriodicTimeSeriesGenerator | dict,
) -> BasePeriodicTimeSeriesGenerator
Set up a periodic time series generator.
The time series generator is instantiated from its configuration by
using the BasePeriodicTimeSeriesGenerator
factory function.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
generator |
BasePeriodicTimeSeriesGenerator | dict
|
A periodic time series generator or its configuration. |
required |
Returns:
Type | Description |
---|---|
BasePeriodicTimeSeriesGenerator
|
A periodic time series generator. |
Example usage:
>>> from startorch.periodic.timeseries import setup_periodic_timeseries_generator
>>> setup_periodic_timeseries_generator(
... {
... "_target_": "startorch.periodic.timeseries.Repeat",
... "generator": {
... "_target_": "startorch.timeseries.SequenceTimeSeriesGenerator",
... "generators": {
... "value": {"_target_": "startorch.sequence.RandUniform"},
... "time": {"_target_": "startorch.sequence.RandUniform"},
... },
... },
... }
... )
RepeatPeriodicTimeSeriesGenerator(
(generator): SequenceTimeSeriesGenerator(
(value): RandUniformSequenceGenerator(low=0.0, high=1.0, feature_size=(1,))
(time): RandUniformSequenceGenerator(low=0.0, high=1.0, feature_size=(1,))
)
)