Diffusion Schedulers Library (within #261 umbrella)
Scope
- Provide generic schedulers (IStepScheduler) implemented with project numeric ops and collections
- Initial implementations: DDIMScheduler (done), plus at least one of PNDM / DPM-Solver++ next
- Unit tests across net462/net8.0; coverage ≥90% for new code
Integration
- Schedulers are injected into diffusion models (e.g., DDPMModel) via constructor and are not a standalone builder option.
Umbrella
⚠️ CRITICAL ARCHITECTURAL REQUIREMENTS
Before implementing this user story, you MUST review:
Mandatory Implementation Checklist
1. INumericOperations Usage (CRITICAL)
2. Inheritance Pattern (REQUIRED)
3. PredictionModelBuilder Integration (REQUIRED)
4. Beginner-Friendly Defaults (REQUIRED)
5. Property Initialization (CRITICAL)
6. Class Organization (REQUIRED)
7. Documentation (REQUIRED)
8. Testing (REQUIRED)
⚠️ Failure to follow these requirements will result in repeated implementation mistakes and PR rejections.
See full details: .github/USER_STORY_ARCHITECTURAL_REQUIREMENTS.md
Diffusion Schedulers Library (within #261 umbrella)
Scope
Integration
Umbrella
Before implementing this user story, you MUST review:
.github/USER_STORY_ARCHITECTURAL_REQUIREMENTS.md.github/PROJECT_RULES.mdMandatory Implementation Checklist
1. INumericOperations Usage (CRITICAL)
protected static readonly INumericOperations<T> NumOps = MathHelper.GetNumericOperations<T>();in base classdouble,float, or specific numeric types - use genericTdefault(T)- useNumOps.ZeroinsteadNumOps.Zero,NumOps.One,NumOps.FromDouble()for valuesNumOps.Add(),NumOps.Multiply(), etc. for arithmeticNumOps.LessThan(),NumOps.GreaterThan(), etc. for comparisons2. Inheritance Pattern (REQUIRED)
I{FeatureName}.csinsrc/Interfaces/(root level, NOT subfolders){FeatureName}Base.csinsrc/{FeatureArea}/inheriting from interface3. PredictionModelBuilder Integration (REQUIRED)
private I{FeatureName}<T>? _{featureName};toPredictionModelBuilder.csBuild()with default:var {featureName} = _{featureName} ?? new Default{FeatureName}<T>();4. Beginner-Friendly Defaults (REQUIRED)
ArgumentExceptionfor invalid values5. Property Initialization (CRITICAL)
default!operator= string.Empty;= new List<T>();or= new Vector<T>(0);NumOps.Zero6. Class Organization (REQUIRED)
src/Interfaces/(root level)src/Regularization/→namespace AiDotNet.Regularization)7. Documentation (REQUIRED)
<b>For Beginners:</b>sections with analogies and examples<param>,<returns>,<exception>tags8. Testing (REQUIRED)
See full details:
.github/USER_STORY_ARCHITECTURAL_REQUIREMENTS.md