3#ifndef cMHN_COMMON_REGULATOR_H
4#define cMHN_COMMON_REGULATOR_H
28 template<
class T, pRC::Size D>
48 auto score(pRC::Tensor<T, D, D>
const &theta)
const
50 return mLambda * mScore(theta);
53 auto grad(pRC::Tensor<T, D, D>
const &theta)
const
55 return mLambda * mGrad(theta);
74 std::function<
T(pRC::Tensor<T, D, D>)> mScore;
75 std::function<pRC::Tensor<T, D, D>(pRC::Tensor<T, D, D>)> mGrad;
92 template<
class T, pRC::Size D>
104 [](pRC::Tensor<
T,
D,
D> const &theta)
106 return pRC::norm<1>(pRC::offDiagonal(theta))();
108 [](pRC::Tensor<T, D, D>
const &theta)
110 return pRC::offDiagonal(pRC::sign(theta));
129 template<
class T, pRC::Size D>
141 [](pRC::Tensor<
T,
D,
D> const &theta)
143 return contract<0, 1, 0, 1>(offDiagonal(theta),
144 offDiagonal(theta))();
146 [](pRC::Tensor<T, D, D>
const &theta)
148 return pRC::offDiagonal(
T(2) * theta);
pRC::Size const D
Definition: CalculatePThetaTests.cpp:9
Class storing an L1 Regulator, specializes the Regulator class.
Definition: regulator.hpp:94
L1Regulator(L1Regulator &&)=default
L1Regulator & operator=(L1Regulator &&) &=default
L1Regulator & operator=(L1Regulator const &) &=default
L1Regulator(T const &lambda)
Definition: regulator.hpp:102
L1Regulator(L1Regulator const &)=default
Class storing an L2 Regulator, specializes the Regulator class.
Definition: regulator.hpp:131
L2Regulator(L2Regulator &&)=default
L2Regulator(L2Regulator const &)=default
L2Regulator & operator=(L2Regulator const &) &=default
L2Regulator(T const &lambda)
Definition: regulator.hpp:139
L2Regulator & operator=(L2Regulator &&) &=default
Class storing all relevant information for a regulator.
Definition: regulator.hpp:30
auto & lambda()
Definition: regulator.hpp:58
Regulator(auto const &score, auto const &grad, auto const &name, auto const &lambda=T(1e-2))
Definition: regulator.hpp:39
auto const lambda() const
Definition: regulator.hpp:63
auto grad(pRC::Tensor< T, D, D > const &theta) const
Definition: regulator.hpp:53
Regulator(Regulator const &)=default
Regulator(Regulator &&)=default
auto name() const
Definition: regulator.hpp:68
Regulator & operator=(Regulator const &) &=default
Regulator & operator=(Regulator &&) &=default
auto score(pRC::Tensor< T, D, D > const &theta) const
Definition: regulator.hpp:48
pRC::Float<> T
Definition: externs_nonTT.hpp:1
Definition: calculate_pTheta.hpp:15