from menpo.model.instancebacked import InstanceBackedModel
from menpo.model.linear import LinearModel, MeanLinearModel
[docs]class InstanceLinearModel(LinearModel, InstanceBackedModel):
r"""
Mixin of :map:`LinearModel` and :map:`InstanceBackedModel` objects.
Parameters
----------
components : ``(n_components, n_features)`` `ndarray`
The components array.
template_instance : :map:`Vectorizable`
The template instance.
"""
def __int__(self, components, template_instance):
LinearModel.__init__(self, components)
InstanceBackedModel.__init__(self, template_instance)
[docs]class MeanInstanceLinearModel(MeanLinearModel, InstanceBackedModel):
r"""
Mixin of :map:`MeanLinearModel` and :map:`InstanceBackedModel` objects.
Parameters
----------
components : ``(n_components, n_features)`` `ndarray`
The components array.
mean_vector : ``(n_features,)`` `ndarray`
The mean vector.
template_instance : :map:`Vectorizable`
The template instance.
"""
def __init__(self, components, mean_vector, template_instance):
MeanLinearModel.__init__(self, components, mean_vector)
InstanceBackedModel.__init__(self, template_instance)
[docs] def mean(self):
r"""
Return the mean of the model.
:type: :map:`Vectorizable`
"""
return self.template_instance.from_vector(self.mean_vector)
[docs] def component(self, index, with_mean=True, scale=1.0):
r"""
Return a particular component of the linear model.
Parameters
----------
index : `int`
The component that is to be returned
with_mean: `bool`, optional
If ``True``, the component will be blended with the mean vector
before being returned. If not, the component is returned on it's
own.
scale : `float`, optional
A scale factor that should be applied to the component. Only
valid in the case where ``with_mean == True``. See
:meth:`component_vector` for how this scale factor is interpreted.
Returns
-------
component : `type(self.template_instance)`
The requested component.
"""
return self.template_instance.from_vector(self.component_vector(
index, with_mean=with_mean, scale=scale))