2929import cebra .models .model as cebra_models_base
3030
3131
32- def create_multiobjective_model (module , ** kwargs ) -> "MultiobjectiveModel" :
32+ def create_multiobjective_model (module ,
33+ ** kwargs ) -> "SubspaceMultiobjectiveModel" :
3334 assert isinstance (module , cebra_models_base .Model )
3435 if isinstance (module , cebra .models .ConvolutionalModelMixin ):
35- return MultiobjectiveConvolutionalModel (module = module , ** kwargs )
36+ return SubspaceMultiobjectiveConvolutionalModel (module = module , ** kwargs )
3637 else :
37- return MultiobjectiveModel (module = module , ** kwargs )
38+ return SubspaceMultiobjectiveModel (module = module , ** kwargs )
3839
3940
4041def check_slices_for_gaps (slice_list ):
@@ -106,7 +107,7 @@ def forward(self, inp):
106107 return inp / torch .norm (inp , dim = 1 , keepdim = True )
107108
108109
109- class LegacyMultiobjectiveModel (nn .Module ):
110+ class MultiobjectiveModel (nn .Module ):
110111 """Wrapper around contrastive learning models to all training with multiple objectives
111112
112113 Multi-objective training splits the last layer's feature representation into multiple
@@ -128,6 +129,13 @@ class LegacyMultiobjectiveModel(nn.Module):
128129
129130 TODO:
130131 - Update nn.Module type annotation for ``module`` to cebra.models.Model
132+
133+ Note:
134+ This model will be deprecated in a future version. Please use the functionality in
135+ :py:mod:`cebra.models.multiobjective` instead, which provides more versatile
136+ multi-objective training capabilities. Instantiation of this model will raise a
137+ deprecation warning. The new model is :py:class:`cebra.models.multiobjective.SubspaceMultiobjectiveModel`
138+ which allows for unlimited subspaces and better configuration of the feature ranges.
131139 """
132140
133141 class Mode :
@@ -240,7 +248,7 @@ def forward(self, inputs):
240248 return tuple (outputs )
241249
242250
243- class MultiobjectiveModel (nn .Module ):
251+ class SubspaceMultiobjectiveModel (nn .Module ):
244252 """Wrapper around contrastive learning models to all training with multiple objectives
245253
246254 Multi-objective training splits the last layer's feature representation into multiple
@@ -354,7 +362,6 @@ def forward(self, inputs):
354362 return output
355363
356364
357- class MultiobjectiveConvolutionalModel (MultiobjectiveModel ,
358- cebra_models_base .ConvolutionalModelMixin
359- ):
365+ class SubspaceMultiobjectiveConvolutionalModel (
366+ SubspaceMultiobjectiveModel , cebra_models_base .ConvolutionalModelMixin ):
360367 pass
0 commit comments