Algorithm-AdaGrad
view release on metacpan or search on metacpan
builder/MyBuilder.pm view on Meta::CPAN
sub new {
my ( $self, %args ) = @_;
$self->SUPER::new(
%args,
add_to_cleanup => [
'Algorithm-AdaGrad-*', 'MANIFEST.bak', 'lib/Algorithm/*.o',
],
meta_add => { keywords => [qw/AdaGrad/], },
needs_compiler_cpp => 11,
extra_compiler_flags => [qw/-Wno-format-security -Wno-duplicate-decl-specifier -Wno-reserved-user-defined-literal/],
);
}
1;
__END__
lib/Algorithm/AdaGrad.xs view on Meta::CPAN
ofs.write(reinterpret_cast<const char*>(&(self->eta)), sizeof(double));
size_t featureNum = classifers.size();
ofs.write(reinterpret_cast<const char*>(&featureNum), sizeof(size_t));
std::unordered_map<std::string, AdaGrad*>::iterator iter = classifers.begin();
std::unordered_map<std::string, AdaGrad*>::iterator iter_end = classifers.end();
for(;iter != iter_end; ++iter){
size_t size = iter->first.size();
ofs.write(reinterpret_cast<const char*>(&size), sizeof(size_t));
ofs.write(iter->first.c_str(), sizeof(char) * size);
iter->second->save(ofs);
}
if(ofs.fail()) {
croak("Failed to save file: %s", filename);
}
ofs.close();
}
static void _load(pTHX_ AdaGradPtr self, SV* sv) {
if(SvTYPE(sv) != SVt_PV && SvTYPE(sv) != SVt_PVMG){
croak("Invalid parameter: the parameter must be string.");
lib/Algorithm/AdaGrad.xs view on Meta::CPAN
STRLEN len;
std::unordered_map<std::string, AdaGrad*>& classifers = *(self->classifers);
double margin = 0.0;
while ((he = hv_iternext(features))){
char* key = HePV(he, len);
std::string featStr = std::string(key, len);
classifers_type::const_iterator iter = classifers.find(featStr);
if(iter == classifers.end()){
continue;
}
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
lib/Algorithm/AdaGrad.xs view on Meta::CPAN
}
void
DESTROY(AdaGradPtr self)
CODE:
{
std::unordered_map<std::string, AdaGrad*>& classifers = *(self->classifers);
std::unordered_map<std::string, AdaGrad*>::iterator iter = classifers.begin();
std::unordered_map<std::string, AdaGrad*>::iterator iter_end = classifers.end();
for(;iter != iter_end; ++iter){
Safefree(iter->second);
}
Safefree (self->classifers);
Safefree (self);
}
( run in 1.207 second using v1.01-cache-2.11-cpan-39bf76dae61 )