quantrs2_device/ml_optimization/
transfer_learning.rs1use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Serialize, Deserialize)]
7pub struct TransferLearningConfig {
8 pub enable_transfer_learning: bool,
10 pub source_domains: Vec<String>,
12 pub transfer_methods: Vec<TransferMethod>,
14 pub domain_adaptation: DomainAdaptationConfig,
16 pub meta_learning: MetaLearningConfig,
18}
19
20#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
22pub enum TransferMethod {
23 FeatureTransfer,
24 ParameterTransfer,
25 InstanceTransfer,
26 RelationalTransfer,
27 DomainAdversarial,
28 FewShotLearning,
29}
30
31#[derive(Debug, Clone, Serialize, Deserialize)]
33pub struct DomainAdaptationConfig {
34 pub enable_adaptation: bool,
36 pub adaptation_methods: Vec<DomainAdaptationMethod>,
38 pub similarity_threshold: f64,
40 pub max_domain_gap: f64,
42}
43
44#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
46pub enum DomainAdaptationMethod {
47 CausalInference,
48 DistributionMatching,
49 AdversarialTraining,
50 GradientReversal,
51 CORAL,
52}
53
54#[derive(Debug, Clone, Serialize, Deserialize)]
56pub struct MetaLearningConfig {
57 pub enable_meta_learning: bool,
59 pub meta_algorithms: Vec<MetaLearningAlgorithm>,
61 pub inner_loop_iterations: usize,
63 pub outer_loop_iterations: usize,
65}
66
67#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
69pub enum MetaLearningAlgorithm {
70 MAML,
71 Reptile,
72 ProtoNet,
73 RelationNet,
74 MatchingNet,
75}