2 #ifndef OPENGM_LEARNABLE_POTTS_FUNCTION_HXX 3 #define OPENGM_LEARNABLE_POTTS_FUNCTION_HXX 28 template<
class T,
class I =
size_t,
class L =
size_t>
40 const std::vector<size_t>& weightIDs,
41 const std::vector<T>& feat
44 const std::vector<size_t>& weightIDs,
45 const std::vector<T>& feat
47 L
shape(
const size_t)
const;
50 template<
class ITERATOR> T
operator()(ITERATOR)
const;
59 template<
class ITERATOR>
76 template <class T, class I, class L>
80 const opengm::learning::Weights<T>& weights,
82 const std::vector<size_t>& weightIDs,
83 const std::vector<T>& feat
85 : weights_(&weights), numLabels_(numLabels), weightIDs_(weightIDs),feat_(feat)
90 template <
class T,
class I,
class L>
95 const std::vector<size_t>& weightIDs,
96 const std::vector<T>& feat
103 template <
class T,
class I,
class L>
113 template <
class T,
class I,
class L>
114 template <
class ITERATOR>
122 if( *(begin) != *(begin+1) )
123 return (*this).feat_[weightNumber];
127 template <
class T,
class I,
class L>
128 template <
class ITERATOR>
142 template <
class T,
class I,
class L>
151 template <
class T,
class I,
class L>
157 template <
class T,
class I,
class L>
168 template<
class T,
class I,
class L>
175 template<
class INDEX_OUTPUT_ITERATOR,
class VALUE_OUTPUT_ITERATOR>
177 template<
class INDEX_INPUT_ITERATOR,
class VALUE_INPUT_ITERATOR>
181 template<
class T,
class I,
class L>
188 template<
class T,
class I,
class L>
197 template<
class T,
class I,
class L>
203 return src.
feat_.size();
206 template<
class T,
class I,
class L>
207 template<
class INDEX_OUTPUT_ITERATOR,
class VALUE_OUTPUT_ITERATOR >
212 INDEX_OUTPUT_ITERATOR indexOutIterator,
213 VALUE_OUTPUT_ITERATOR valueOutIterator
217 *indexOutIterator = src.
feat_.size();
223 for(
size_t i=0; i<src.
feat_.size();++i){
224 *valueOutIterator = src.
feat_[i];
229 template<
class T,
class I,
class L>
230 template<
class INDEX_INPUT_ITERATOR,
class VALUE_INPUT_ITERATOR >
234 INDEX_INPUT_ITERATOR indexInIterator,
235 VALUE_INPUT_ITERATOR valueInIterator,
240 const size_t numW=*indexInIterator;
242 dst.
feat_.resize(numW);
244 for(
size_t i=0; i<numW;++i){
245 dst.
feat_[i]=*valueInIterator;
254 #endif // #ifndef OPENGM_LEARNABLE_FUNCTION_HXX
size_t numberOfWeights() const
Fallback implementation of member functions of OpenGM functions.
const opengm::learning::Weights< T > * weights_
#define OPENGM_ASSERT(expression)
T operator()(ITERATOR) const
ValueType getWeight(const size_t pi) const
T weightGradient(size_t, ITERATOR) const
L shape(const size_t) const
const size_t FUNCTION_TYPE_ID_OFFSET
User-defined function have ids smaller than FUNCTION_TYPE_ID_OFFSET.
void setWeights(const opengm::learning::Weights< T > &weights) const
opengm::functions::learnable::LPotts< T, I, L >::ValueType ValueType
I weightIndex(const size_t weightNumber) const
Learnable feature function for two variables.
std::vector< size_t > weightIDs_
bool isGeneralizedPotts() const