2 #ifndef OPENGM_UNARY_LOSS_FUNCTION 3 #define OPENGM_UNARY_LOSS_FUNCTION 22 template<
class T,
class I,
class L>
51 const LabelType numberOfLabels,
52 const LabelType gtLabel,
54 const ValueType multiplier,
58 template<
class Iterator> ValueType
operator()(Iterator begin)
const;
59 IndexType
shape(
const IndexType)
const;
61 IndexType
size()
const;
64 LabelType numberOfLabels_;
67 ValueType multiplier_;
72 template<
class T,
class I,
class L>
82 : numberOfLabels_(numberOfLabels),
85 multiplier_(multiplier),
86 sharedMultiplers_(&sharedMultiplers),
92 template<
class T,
class I,
class L>
93 template<
class Iterator>
101 const ValueType isDifferent = (l != gtLabel_ ? 1.0 : 0.0);
105 return static_cast<ValueType>(-1.0) * multiplier_ * isDifferent;
108 return multiplier_ * isDifferent * sharedMultiplers_->
labelMult_(l);
111 return multiplier_ * isDifferent * sharedMultiplers_->
labelMult_(gtLabel_);
114 return multiplier_ * isDifferent * sharedMultiplers_->
labelMult_(l, gtLabel_);
120 return multiplier_ * std::pow(
int(l)-
int(gtLabel_),2);
128 template<
class T,
class I,
class L>
134 return numberOfLabels_;
137 template<
class T,
class I,
class L>
143 template<
class T,
class I,
class L>
146 return numberOfLabels_;
151 #endif // #ifndef OPENGM_UNARY_LOSS_FUNCTION
Fallback implementation of member functions of OpenGM functions.
IndexType dimension() const
IndexType shape(const IndexType) const
ValueType operator()(Iterator begin) const
UnaryLossFunction(const LabelType numberOfLabels, const LabelType gtLabel, const LossType lossType, const ValueType multiplier, const SharedMultiplers &sharedMultiplers, const bool owner)
UnaryLossFunction convert semi-ring in a lazy fashion.
marray::Marray< ValueType > labelMult_