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.
UnaryLossFunction(const LabelType numberOfLabels, const LabelType gtLabel, const LossType lossType, const ValueType multiplier, const SharedMultiplers &sharedMultiplers, const bool owner)
IndexType dimension() const
UnaryLossFunction convert semi-ring in a lazy fashion.
ValueType operator()(Iterator begin) const
marray::Marray< ValueType > labelMult_
IndexType shape(const IndexType) const