12 #ifndef MLPACK_METHODS_ANN_VISITOR_BIAS_SET_VISITOR_IMPL_HPP 13 #define MLPACK_METHODS_ANN_VISITOR_BIAS_SET_VISITOR_IMPL_HPP 29 template<
typename LayerType>
32 return LayerSize(layer);
37 return layer.apply_visitor(*
this);
41 inline typename std::enable_if<
42 !HasBiasCheck<T, arma::mat&(T::*)()>::value &&
43 !HasModelCheck<T>::value,
size_t>::type
44 BiasSetVisitor::LayerSize(T* )
const 50 inline typename std::enable_if<
51 !HasBiasCheck<T, arma::mat&(T::*)()>::value &&
52 HasModelCheck<T>::value,
size_t>::type
53 BiasSetVisitor::LayerSize(T* layer)
const 55 size_t modelOffset = 0;
57 for (
size_t i = 0; i < layer->Model().size(); ++i)
60 weight, modelOffset + offset), layer->Model()[i]);
67 inline typename std::enable_if<
68 HasBiasCheck<T, arma::mat&(T::*)()>::value &&
69 !HasModelCheck<T>::value,
size_t>::type
70 BiasSetVisitor::LayerSize(T* layer)
const 72 layer->Bias() = arma::mat(weight.memptr() + offset,
73 layer->Bias().n_rows, layer->Bias().n_cols,
false,
false);
75 return layer->Bias().n_elem;
79 inline typename std::enable_if<
80 HasBiasCheck<T, arma::mat&(T::*)()>::value &&
81 HasModelCheck<T>::value,
size_t>::type
82 BiasSetVisitor::LayerSize(T* layer)
const 84 layer->Bias() = arma::mat(weight.memptr() + offset,
85 layer->Bias().n_rows, layer->Bias().n_cols,
false,
false);
87 size_t modelOffset = layer->Bias().n_elem;
89 for (
size_t i = 0; i < layer->Model().size(); ++i)
92 weight, modelOffset + offset), layer->Model()[i]);
Linear algebra utility functions, generally performed on matrices or vectors.
Definition: cv.hpp:1
BiasSetVisitor(arma::mat &weight, const size_t offset=0)
Update the bias parameters given the parameters' set and offset.
Definition: bias_set_visitor_impl.hpp:22
size_t operator()(LayerType *layer) const
Update the parameters' set.
Definition: bias_set_visitor_impl.hpp:30