31 #ifndef SHARK_OBJECTIVEFUNCTIONS_LOSS_HUBERLOSS_H 32 #define SHARK_OBJECTIVEFUNCTIONS_LOSS_HUBERLOSS_H 58 {
return "HuberLoss"; }
63 SIZE_CHECK(labels.size1() == predictions.size1());
64 SIZE_CHECK(labels.size2() == predictions.size2());
65 std::size_t numInputs = labels.size1();
68 for(std::size_t i = 0; i != numInputs;++i){
72 if(norm2 <=
sqr(m_delta)){
76 error += m_delta*std::sqrt(norm2)-0.5*
sqr(m_delta);
83 std::size_t numInputs =
size(labels);
84 std::size_t outputDim = predictions.size2();
87 gradient.resize(numInputs,outputDim);
89 for(std::size_t i = 0; i != numInputs;++i){
93 if(norm2 <=
sqr(m_delta)){
98 double norm = std::sqrt(norm2);
99 error += m_delta*norm-0.5*
sqr(m_delta);