60 #ifndef SHARK_ML_MODEL_CONVERTER_H 61 #define SHARK_ML_MODEL_CONVERTER_H 87 {
return "ThresholdConverter"; }
94 return boost::shared_ptr<State>(
new EmptyState());
98 eval(patterns,outputs);
125 {
return "ThresholdVectorConverter"; }
132 return boost::shared_ptr<State>(
new EmptyState());
137 eval(patterns,outputs);
165 template<
class Model>
169 typedef typename Model::BatchOutputType ModelBatchOutputType;
179 : m_decisionFunction(decisionFunction)
183 {
return "ArgMaxConverter<"+m_decisionFunction.name()+
">"; }
186 return m_decisionFunction.parameterVector();
190 m_decisionFunction.setParameterVector(newParameters);
194 return m_decisionFunction.numberOfParameters();
199 return m_decisionFunction;
204 return m_decisionFunction;
207 void eval(BatchInputType
const& input, BatchOutputType& output)
const{
209 ModelBatchOutputType modelResult;
210 m_decisionFunction.eval(input,modelResult);
211 std::size_t
batchSize = modelResult.size1();
212 output.resize(batchSize);
213 if(modelResult.size2()== 1)
215 for(std::size_t i = 0; i !=
batchSize; ++i){
216 output(i) = modelResult(i,0) > 0.0;
220 for(std::size_t i = 0; i !=
batchSize; ++i){
221 output(i) =
static_cast<unsigned int>(
arg_max(
row(modelResult,i)));
225 void eval(BatchInputType
const& input, BatchOutputType& output,
State& state)
const{
229 void eval(InputType
const & pattern, OutputType& output)
const{
230 typename Model::OutputType modelResult;
231 m_decisionFunction.eval(pattern,modelResult);
232 if(modelResult.size()== 1){
233 output = modelResult(0) > 0.0;
236 output =
static_cast<unsigned int>(
arg_max(modelResult));
242 archive >> m_decisionFunction;
246 archive << m_decisionFunction;
250 Model m_decisionFunction;