transition
startorch.transition ¶
Contain transition matrix generators.
startorch.transition.BaseTransitionGenerator ¶
Bases: ABC
Define the base class to generate a transition matrix.
A child class has to implement the generate
method.
Example usage:
>>> import torch
>>> from startorch.transition import Diagonal
>>> generator = Diagonal()
>>> generator
DiagonalTransitionGenerator()
>>> generator.generate(n=6)
tensor([[1., 0., 0., 0., 0., 0.],
[0., 1., 0., 0., 0., 0.],
[0., 0., 1., 0., 0., 0.],
[0., 0., 0., 1., 0., 0.],
[0., 0., 0., 0., 1., 0.],
[0., 0., 0., 0., 0., 1.]])
startorch.transition.BaseTransitionGenerator.generate
abstractmethod
¶
generate(n: int, rng: Generator | None = None) -> Tensor
Return a transition matrix.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
n |
int
|
The size of the transition matrix. |
required |
rng |
Generator | None
|
An optional random number generator. |
None
|
Returns:
Type | Description |
---|---|
Tensor
|
The generated transition matrix of shape |
Example usage:
>>> import torch
>>> from startorch.transition import Diagonal
>>> generator = Diagonal()
>>> generator.generate(n=6)
tensor([[1., 0., 0., 0., 0., 0.],
[0., 1., 0., 0., 0., 0.],
[0., 0., 1., 0., 0., 0.],
[0., 0., 0., 1., 0., 0.],
[0., 0., 0., 0., 1., 0.],
[0., 0., 0., 0., 0., 1.]])
startorch.transition.Diagonal ¶
Bases: BaseTransitionGenerator
Implement a simple diagonal transition matrix generator.
Example usage:
>>> import torch
>>> from startorch.transition import Diagonal
>>> generator = Diagonal()
>>> generator
DiagonalTransitionGenerator()
>>> generator.generate(n=6)
tensor([[1., 0., 0., 0., 0., 0.],
[0., 1., 0., 0., 0., 0.],
[0., 0., 1., 0., 0., 0.],
[0., 0., 0., 1., 0., 0.],
[0., 0., 0., 0., 1., 0.],
[0., 0., 0., 0., 0., 1.]])
startorch.transition.DiagonalTransitionGenerator ¶
Bases: BaseTransitionGenerator
Implement a simple diagonal transition matrix generator.
Example usage:
>>> import torch
>>> from startorch.transition import Diagonal
>>> generator = Diagonal()
>>> generator
DiagonalTransitionGenerator()
>>> generator.generate(n=6)
tensor([[1., 0., 0., 0., 0., 0.],
[0., 1., 0., 0., 0., 0.],
[0., 0., 1., 0., 0., 0.],
[0., 0., 0., 1., 0., 0.],
[0., 0., 0., 0., 1., 0.],
[0., 0., 0., 0., 0., 1.]])
startorch.transition.Mask ¶
Bases: BaseTransitionGenerator
Implement a transition matrix generator that uses a tensor generator.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
generator |
BaseTransitionGenerator | dict
|
The transition generator or its configuration. |
required |
num_mask |
int
|
The number of values to mask on each row of the transition matrix. |
required |
Example usage:
>>> import torch
>>> from startorch.transition import MaskTransitionGenerator, TensorTransitionGenerator
>>> from startorch.tensor import Full
>>> generator = MaskTransitionGenerator(
... generator=TensorTransitionGenerator(Full(1.0)), num_mask=4
... )
>>> generator
MaskTransitionGenerator(
(generator): TensorTransitionGenerator(
(generator): FullTensorGenerator(value=1.0, dtype=None)
)
(num_mask): 4
)
>>> generator.generate(n=6)
tensor([[...]])
startorch.transition.MaskTransitionGenerator ¶
Bases: BaseTransitionGenerator
Implement a transition matrix generator that uses a tensor generator.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
generator |
BaseTransitionGenerator | dict
|
The transition generator or its configuration. |
required |
num_mask |
int
|
The number of values to mask on each row of the transition matrix. |
required |
Example usage:
>>> import torch
>>> from startorch.transition import MaskTransitionGenerator, TensorTransitionGenerator
>>> from startorch.tensor import Full
>>> generator = MaskTransitionGenerator(
... generator=TensorTransitionGenerator(Full(1.0)), num_mask=4
... )
>>> generator
MaskTransitionGenerator(
(generator): TensorTransitionGenerator(
(generator): FullTensorGenerator(value=1.0, dtype=None)
)
(num_mask): 4
)
>>> generator.generate(n=6)
tensor([[...]])
startorch.transition.Normalize ¶
Bases: BaseTransitionGenerator
Implement a transition matrix generator that normalizes a transition matrix.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
generator |
BaseTransitionGenerator | dict
|
The transition generator or its configuration. |
required |
p |
float
|
The exponent value in the norm formulation. |
2.0
|
Example usage:
>>> import torch
>>> from startorch.transition import Normalize, TensorTransitionGenerator
>>> from startorch.tensor import Full
>>> generator = Normalize(generator=TensorTransitionGenerator(Full(1.0)))
>>> generator
NormalizeTransitionGenerator(
(generator): TensorTransitionGenerator(
(generator): FullTensorGenerator(value=1.0, dtype=None)
)
(p): 2.0
)
>>> generator.generate(n=4)
tensor([[0.5000, 0.5000, 0.5000, 0.5000],
[0.5000, 0.5000, 0.5000, 0.5000],
[0.5000, 0.5000, 0.5000, 0.5000],
[0.5000, 0.5000, 0.5000, 0.5000]])
startorch.transition.NormalizeTransitionGenerator ¶
Bases: BaseTransitionGenerator
Implement a transition matrix generator that normalizes a transition matrix.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
generator |
BaseTransitionGenerator | dict
|
The transition generator or its configuration. |
required |
p |
float
|
The exponent value in the norm formulation. |
2.0
|
Example usage:
>>> import torch
>>> from startorch.transition import Normalize, TensorTransitionGenerator
>>> from startorch.tensor import Full
>>> generator = Normalize(generator=TensorTransitionGenerator(Full(1.0)))
>>> generator
NormalizeTransitionGenerator(
(generator): TensorTransitionGenerator(
(generator): FullTensorGenerator(value=1.0, dtype=None)
)
(p): 2.0
)
>>> generator.generate(n=4)
tensor([[0.5000, 0.5000, 0.5000, 0.5000],
[0.5000, 0.5000, 0.5000, 0.5000],
[0.5000, 0.5000, 0.5000, 0.5000],
[0.5000, 0.5000, 0.5000, 0.5000]])
startorch.transition.PermuteDiagonal ¶
Bases: BaseTransitionGenerator
Implement a simple diagonal transition matrix generator.
Example usage:
>>> import torch
>>> from startorch.transition import PermuteDiagonal
>>> generator = PermuteDiagonal()
>>> generator
PermuteDiagonalTransitionGenerator()
>>> generator.generate(n=6)
tensor([...]])
startorch.transition.PermuteDiagonalTransitionGenerator ¶
Bases: BaseTransitionGenerator
Implement a simple diagonal transition matrix generator.
Example usage:
>>> import torch
>>> from startorch.transition import PermuteDiagonal
>>> generator = PermuteDiagonal()
>>> generator
PermuteDiagonalTransitionGenerator()
>>> generator.generate(n=6)
tensor([...]])
startorch.transition.TensorTransitionGenerator ¶
Bases: BaseTransitionGenerator
Implement a transition matrix generator that uses a tensor generator.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
generator |
BaseTensorGenerator | dict
|
The tensor generator or its configuration. |
required |
Example usage:
>>> import torch
>>> from startorch.transition import TensorTransitionGenerator
>>> from startorch.tensor import RandUniform
>>> generator = TensorTransitionGenerator(generator=RandUniform())
>>> generator
TensorTransitionGenerator(
(generator): RandUniformTensorGenerator(low=0.0, high=1.0)
)
>>> generator.generate(n=6)
tensor([[...]])
startorch.transition.Transform ¶
Bases: BaseTransitionGenerator
Implement a transition matrix generator that transform a transition matrix.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
generator |
BaseTransitionGenerator | dict
|
The transition generator or its configuration. |
required |
transformer |
BaseTensorTransformer | dict
|
The tensor transformer or its configuration. |
required |
Example usage:
>>> import torch
>>> from startorch.transition import Transform, Diagonal
>>> from startorch.tensor.transformer import Clamp
>>> generator = Transform(generator=Diagonal(), transformer=Clamp(min=0.0, max=0.5))
>>> generator
TransformTransitionGenerator(
(generator): DiagonalTransitionGenerator()
(transformer): ClampTensorTransformer(min=0.0, max=0.5)
)
>>> generator.generate(n=4)
tensor([[0.5000, 0.0000, 0.0000, 0.0000],
[0.0000, 0.5000, 0.0000, 0.0000],
[0.0000, 0.0000, 0.5000, 0.0000],
[0.0000, 0.0000, 0.0000, 0.5000]])
startorch.transition.TransformTransitionGenerator ¶
Bases: BaseTransitionGenerator
Implement a transition matrix generator that transform a transition matrix.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
generator |
BaseTransitionGenerator | dict
|
The transition generator or its configuration. |
required |
transformer |
BaseTensorTransformer | dict
|
The tensor transformer or its configuration. |
required |
Example usage:
>>> import torch
>>> from startorch.transition import Transform, Diagonal
>>> from startorch.tensor.transformer import Clamp
>>> generator = Transform(generator=Diagonal(), transformer=Clamp(min=0.0, max=0.5))
>>> generator
TransformTransitionGenerator(
(generator): DiagonalTransitionGenerator()
(transformer): ClampTensorTransformer(min=0.0, max=0.5)
)
>>> generator.generate(n=4)
tensor([[0.5000, 0.0000, 0.0000, 0.0000],
[0.0000, 0.5000, 0.0000, 0.0000],
[0.0000, 0.0000, 0.5000, 0.0000],
[0.0000, 0.0000, 0.0000, 0.5000]])
startorch.transition.is_transition_generator_config ¶
is_transition_generator_config(config: dict) -> bool
Indicate if the input configuration is a configuration for a
BaseTransitionGenerator
.
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.transition import is_transition_generator_config
>>> is_transition_generator_config({"_target_": "startorch.transition.Diagonal"})
True
startorch.transition.setup_transition_generator ¶
setup_transition_generator(
generator: BaseTransitionGenerator | dict,
) -> BaseTransitionGenerator
Set up a transition matrix generator.
The transition generator is instantiated from its configuration by
using the BaseTransitionGenerator
factory function.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
generator |
BaseTransitionGenerator | dict
|
A transition matrix generator or its configuration. |
required |
Returns:
Type | Description |
---|---|
BaseTransitionGenerator
|
A transition matrix generator. |
Example usage:
>>> from startorch.transition import setup_transition_generator
>>> setup_transition_generator({"_target_": "startorch.transition.Diagonal"})
DiagonalTransitionGenerator()