Exponential Integrator
Exponential integrator sampler for diffusion models.
This module provides an implementation of the exponential integrator method for sampling from diffusion models, which can be more stable than simpler numerical integration schemes.
ExponentialIntegrator
¶
Bases: BaseSampler
Exponential integrator for diffusion process sampling.
This sampler implements an exponential integration scheme for solving the stochastic differential equation associated with the reverse diffusion process. It can provide better stability properties than simpler methods like Euler-Maruyama.
Attributes:
| Name | Type | Description |
|---|---|---|
diffusion |
The diffusion model to sample from. |
|
verbose |
Whether to print progress information during sampling. |
|
lambda_param |
The stabilization parameter for the exponential scheme. |
Source code in image_gen\samplers\exponential.py
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 | |
__call__(x_T, score_model, *_, n_steps=500, seed=None, callback=None, callback_frequency=50, guidance=None, **__)
¶
Perform sampling using the exponential integrator method.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x_T
|
Tensor
|
The initial noise tensor to start sampling from. |
required |
score_model
|
Callable
|
The score model function that predicts the score. |
required |
n_steps
|
int
|
Number of sampling steps. Defaults to 500. |
500
|
seed
|
Optional[int]
|
Random seed for reproducibility. Defaults to None. |
None
|
callback
|
Optional[Callable[[Tensor, int], None]]
|
Optional function called during sampling to monitor progress. It takes the current sample and step number as inputs. Defaults to None. |
None
|
callback_frequency
|
int
|
How often to call the callback function. Defaults to 50. |
50
|
guidance
|
Optional[Callable[[Tensor, Tensor], Tensor]]
|
Optional guidance function for conditional sampling. Defaults to None. |
None
|
Returns:
| Type | Description |
|---|---|
Tensor
|
A tuple containing the final sample tensor and the final sample |
Tensor
|
tensor again (for compatibility with the base class interface). |
Source code in image_gen\samplers\exponential.py
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 | |
__init__(diffusion, *args, lambda_param=1.0, verbose=True, **kwargs)
¶
Initialize the exponential integrator sampler.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
diffusion
|
BaseDiffusion
|
The diffusion model to sample from. |
required |
*args
|
Any
|
Additional positional arguments. |
()
|
lambda_param
|
float
|
The lambda parameter for the exponential integration. Defaults to 1.0. |
1.0
|
verbose
|
bool
|
Whether to print progress information during sampling. Defaults to True. |
True
|
**kwargs
|
Any
|
Additional keyword arguments. |
{}
|
Source code in image_gen\samplers\exponential.py
config()
¶
Return the configuration of the sampler.
Returns:
| Type | Description |
|---|---|
dict
|
A dictionary with the sampler's configuration parameters. |