Skip to content

Commit

Permalink
first commit: partial implementation with design proposal
Browse files Browse the repository at this point in the history
  • Loading branch information
ybouilla committed Mar 6, 2023
1 parent 2a80098 commit 91f4115
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 1 deletion.
48 changes: 48 additions & 0 deletions fedbiomed/common/optimizers/generic_optimizers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
from abc import abstractmethod
from typing import Callable

from fedbiomed.common import models
from fedbiomed.common.exceptions import FedbiomedOptimizerError
from fedbiomed.common.optimizers.optimizer import Optimizer

import declearn


class GenericOptimizer:
model: models
optimizer: Optimizer
_step_method: Callable = NotImplemented
def __init__(self, model, optimizer):
self.model = model
self.optimizer = optimizer

if isinstance(optimizer, declearn.optimizer.Optimizer):
self._step_method = optimizer.step_modules
else:
self._step_method = optimizer.step_native

def step(self, weights, gradients):
if self._step_method is NotImplemented:
raise FedbiomedOptimizerError("Error, method used for step not implemeted yet")
return self._step_method(weights, gradients)

def step_modules(self):
pass

def set_state(self):
pass
def get_state(self):
pass
@abstractmethod
def step_native(self):
pass

class TorchOptimizer(GenericOptimizer):
def setp_native(self):
pass


class SkLearnOptimizer(GenericOptimizer):
def step_native(self):
pass

File renamed without changes.
2 changes: 1 addition & 1 deletion tests/test_optimizer.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
from declearn.optimizer.regularizers import Regularizer

from fedbiomed.common.exceptions import FedbiomedOptimizerError
from fedbiomed.common.optimizer import Optimizer
from fedbiomed.common.optimizers.optimizer import Optimizer


class TestOptimizer(unittest.TestCase):
Expand Down

0 comments on commit 91f4115

Please sign in to comment.