Algorithm-AdaGrad
view release on metacpan or search on metacpan
lib/Algorithm/AdaGrad.xs view on Meta::CPAN
if(items > 1){
SV* arg_sv = ST(1);
eta = getDoubleValue(arg_sv, "Parameter must be a number.");
}
AdaGradPtr obj = NULL;
New(__LINE__, obj, 1, struct AdaGradS);
obj->classifers = new classifers_type();
obj->eta = eta;
RETVAL = obj;
}
OUTPUT:
RETVAL
int
update(AdaGradPtr self, SV* sv)
CODE:
{
SvGETMAGIC (sv);
if(!SvROK(sv) || SvTYPE(SvRV(sv)) != SVt_PVAV) {
croak("Parameter must be ARRAY-reference");
}
lib/Algorithm/AdaGrad.xs view on Meta::CPAN
AV* av = (AV*)SvRV(sv);
size_t arraySize = av_len(av);
for(size_t i = 0; i <= arraySize; ++i){
SV** elm = av_fetch(av, i, 0);
if(elm != NULL){
handleUpdate(self, *elm);
}
}
RETVAL = 0;
}
OUTPUT:
RETVAL
int
classify(AdaGradPtr self, SV* sv)
CODE:
{
if(!SvROK(sv) || SvTYPE(SvRV(sv)) != SVt_PVHV) {
croak("Invalid parameter: Parameter must be HASH-reference.");
}
lib/Algorithm/AdaGrad.xs view on Meta::CPAN
}
AdaGrad* ag = iter->second;
SV* val = HeVAL(he);
double gradient = getDoubleValue(val, "Invalid parameter: type of parameter must be number.");
margin += ag->classify(gradient);
}
RETVAL = margin >= 0 ? POSITIVE_LABEL : NEGATIVE_LABEL;
}
OUTPUT:
RETVAL
void save(AdaGradPtr self, SV* sv)
CODE:
{
_save(self, sv);
}
void
AdaGradPtr T_PTROBJ_ADAGRAD
INPUT
T_PTROBJ_ADAGRAD
$var = GET_ADAGRAD_PTR($arg);
OUTPUT
T_PTROBJ_ADAGRAD
sv_setref_pv($arg, klass, (void*)$var);
( run in 0.439 second using v1.01-cache-2.11-cpan-4e96b696675 )