Diffusers documentation
EulerAncestralDiscreteScheduler
EulerAncestralDiscreteScheduler
Trình lập lịch sử dụng lấy mẫu tổ tiên với các bước của phương pháp Euler. Đây là một trình lập lịch nhanh, thường có thể tạo ra các kết quả tốt trong 20-30 bước. Trình lập lịch này dựa trên bản triển khai k-diffusion gốc của Katherine Crowson.
EulerAncestralDiscreteScheduler
lớp diffusers.EulerAncestralDiscreteScheduler
< source >( num_train_timesteps: int = 1000beta_start: float = 0.0001beta_end: float = 0.02beta_schedule: str = 'linear'trained_betas: numpy.ndarray | list[float] | None = Noneprediction_type: str = 'epsilon'timestep_spacing: str = 'linspace'steps_offset: int = 0rescale_betas_zero_snr: bool = False )
Tham số
- num_train_timesteps (
int, mặc định là 1000) — Số bước khuếch tán để huấn luyện mô hình. - beta_start (
float, mặc định là 0.0001) — Giá trịbetaban đầu của suy luận. - beta_end (
float, mặc định là 0.02) — Giá trịbetacuối cùng. - beta_schedule (
"linear","scaled_linear", hoặc"squaredcos_cap_v2", mặc định là"linear") — Lịch trình beta, một ánh xạ từ một khoảng beta sang một chuỗi các beta để bước qua mô hình. Chọn từlinear,scaled_linear, hoặcsquaredcos_cap_v2. - trained_betas (
np.ndarray, tùy chọn) — Truyền một mảng betas trực tiếp vào constructor để bỏ quabeta_startvàbeta_end. - prediction_type (
"epsilon","sample", or"v_prediction", defaults to"epsilon", optional) — Prediction type of the scheduler function; can beepsilon(predicts the noise of the diffusion process),sample(directly predicts the noisy sample) orv_prediction` (see section 2.4 of Imagen Video paper). - timestep_spacing (
"linspace","leading", hoặc"trailing", mặc định là"linspace") — Cách các timestep nên được scale. Xem Bảng 2 của Common Diffusion Noise Schedules and Sample Steps are Flawed để biết thêm thông tin. - steps_offset (
int, mặc định là 0) — Một giá trị bù được cộng vào các bước suy luận, theo yêu cầu của một số họ mô hình. - rescale_betas_zero_snr (
bool, mặc định làFalse) — Có nên điều chỉnh lại betas để có SNR cuối bằng zero hay không. Điều này cho phép mô hình tạo ra các mẫu rất sáng và rất tối thay vì giới hạn ở các mẫu có độ sáng trung bình. Liên quan lỏng lẻo đến--offset_noise.
Mẫu tổ tiên với các bước của phương pháp Euler.
Mô hình này kế thừa từ SchedulerMixin và ConfigMixin. Xem tài liệu của lớp cha để biết các phương thức chung mà thư viện triển khai cho tất cả các trình lập lịch, chẳng hạn như tải và lưu.
add_noise
< source >( original_samples: Tensornoise: Tensortimesteps: Tensor ) → torch.Tensor
Tham số
- original_samples (
torch.Tensor) — Các mẫu gốc mà nhiễu sẽ được thêm vào. - noise (
torch.Tensor) — Tensor nhiễu cần thêm vào các mẫu gốc. - timesteps (
torch.Tensor) — Các bước thời gian (timesteps) để thêm nhiễu, xác định mức nhiễu từ lịch trình (schedule).
Trả về
torch.Tensor
Các mẫu nhiễu với nhiễu được thêm vào, được điều chỉnh theo lịch trình bước thời gian.
Thêm nhiễu vào các mẫu gốc theo lịch trình nhiễu tại các bước thời gian được chỉ định.
index_for_timestep
< source >( timestep: typing.Union[float, torch.Tensor]schedule_timesteps: typing.Optional[torch.Tensor] = None ) → int
Tham số
- timestep (
floathoặctorch.Tensor) — Giá trị bước thời gian cần tìm trong lịch trình. - schedule_timesteps (
torch.Tensor, tùy chọn) — Lịch trình bước thời gian để tìm kiếm. Nếu làNone, sẽ sử dụngself.timesteps.
Trả về
int
Chỉ số của bước thời gian trong lịch trình. Đối với bước đầu tiên, trả về chỉ số thứ hai nếu có nhiều kết quả khớp để tránh bỏ qua một sigma khi bắt đầu giữa lịch trình (ví dụ: cho image-to-image).
Tìm chỉ số của một bước thời gian (timestep) cho trước trong lịch trình bước thời gian.
scale_model_input
< source >( sample: Tensortimestep: typing.Union[float, torch.Tensor] ) → torch.Tensor
Đảm bảo khả năng hoán đổi với các trình lập lịch cần mở rộng đầu vào của mô hình khử nhiễu tùy thuộc vào bước thời gian hiện tại. Mở rộng đầu vào của mô hình khử nhiễu bằng (sigma**2 + 1) ** 0.5 để khớp với thuật toán Euler.
set_begin_index
< source >( begin_index: int = 0 )
Đặt chỉ số bắt đầu cho trình lập lịch. Hàm này nên được chạy từ pipeline trước khi suy luận.
set_timesteps
< source >( num_inference_steps: intdevice: typing.Union[str, torch.device] = None )
Đặt các bước thời gian rời rạc được sử dụng cho chuỗi khuếch tán (cần chạy trước khi suy luận).
bước
< source >( model_output: Tensortimestep: typing.Union[float, torch.Tensor]sample: Tensorgenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → EulerAncestralDiscreteSchedulerOutput or tuple
Tham số
- model_output (
torch.Tensor) — Đầu ra trực tiếp từ mô hình khuếch tán đã học. - timestep (
floathoặctorch.Tensor) — Bước thời gian rời rạc hiện tại trong chuỗi khuếch tán. - sample (
torch.Tensor) — Một bản thể hiện hiện tại của mẫu được tạo ra bởi quá trình khuếch tán. - generator (
torch.Generator, tùy chọn) — Bộ tạo số ngẫu nhiên. - return_dict (
bool, mặc định làTrue) — Có nên trả về một EulerAncestralDiscreteSchedulerOutput hay tuple hay không.
Trả về
EulerAncestralDiscreteSchedulerOutput hoặc tuple
If return_dict is True,
EulerAncestralDiscreteSchedulerOutput is returned,
otherwise a tuple is returned where the first element is the sample tensor.
Dự đoán mẫu từ bước thời gian trước đó bằng cách đảo ngược SDE. Hàm này lan truyền quá trình khuếch tán từ các đầu ra của mô hình đã học (thường nhất là nhiễu được dự đoán).
EulerAncestralDiscreteSchedulerOutput
lớp diffusers.schedulers.scheduling_euler_ancestral_discrete.EulerAncestralDiscreteSchedulerOutput
< source >( prev_sample: Tensorpred_original_sample: typing.Optional[torch.Tensor] = None )
Tham số
- prev_sample (
torch.Tensorcó shape(batch_size, num_channels, height, width)đối với ảnh) — Mẫu đã tính(x_{t-1})của bước thời gian trước đó.prev_samplenên được sử dụng làm đầu vào mô hình tiếp theo trong vòng lặp khử nhiễu. - pred_original_sample (
torch.Tensorcó hình dạng(batch_size, num_channels, height, width)đối với ảnh) — Mẫu khử nhiễu dự đoán(x_{0})dựa trên đầu ra của mô hình tại bước thời gian hiện tại.pred_original_samplecó thể được sử dụng để xem trước tiến độ hoặc cho việc dẫn hướng.
Lớp đầu ra cho kết quả của hàm step của trình lập lịch.