AI-ML
view release on metacpan or search on metacpan
}
# endif
return cost/m;
}
Matrix *mini_batch(Matrix *m, int start, int size, int axis){
Matrix *r;
int end;
if(start < 0){
fprintf(stderr, "start index need to be bigger or equal index 0\n");
exit(1);
}
end = start + size - 1;
if(axis == 0) // every training example is a column
{
if(end >= m->columns){
fprintf(stderr, "Out of index of columns\n");
exit(1);
}
r = slice(m, -1, -1, start, end);
}
else if(axis == 1){
if(end >= m->rows){
fprintf(stderr, "Out of index of rows\n");
exit(1);
}
r = slice(m, start, end, -1, -1);
}
else{
fprintf(stderr, "Invalid axis\n");
exit(1);
}
return r;
}
Matrix *predict_binary_classification(Matrix *m, REAL threshold){
Matrix *yatt;
int i, rows, cols, size;
rows = m->rows;
cols = m->columns;
size = rows * cols;
NEW_MATRIX(REAL, yatt, rows, cols);
for( i = 0; i < size; i++ ){
//fprintf(stderr, "%f\n", m->values[i]);
if(m->values[i] >= threshold){
yatt->values[i] = 1;
}
else{
yatt->values[i] = 0;
}
//fprintf(stderr, "%f -> %f\n", m->values[i], yatt->values[i]);
}
return yatt;
}
double accuracy(Matrix *y, Matrix *yatt){
double total = 0;
int size = y->columns * y->rows;
for ( int i = 0; i < size; i++ ){
if(y->values[i] == yatt->values[i]) total++;
scripts/load_data.c view on Meta::CPAN
if( fread(&magic, 4, 1, flabel) <= 0) exit(1);
assert(magic = 0x01080000);
if( fread(&num, 4, 1, flabel) <= 0) exit(1);
endianSwap(&num);
Matrix *m;
NEW_MATRIX(m, num, 10);
int i;
for( i = 0; i < num; i++){
if( fread(&value, 1 , 1, flabel) <= 0 ) {exit(1);}
if(i < 10) fprintf(stderr, "%d\n",value);
m->values[i * m->columns + value] = 1;
//printf("%d\n",pos);
}
fclose(flabel);
return m;
}
void save(Matrix *m, char *path){
FILE *f;
f = fopen(path, "w");
if(f == NULL) {
fprintf(stderr, "save: can't create file\n");
exit(1);
}
int row, col;
for( row = 0; row < m->rows; row++ ) {
for( col = 0; col < m->columns; col++ ) {
if( col == 0 ) {
fprintf(f, "%f", (double)m->values[row * m->columns + col]);
} else {
fprintf(f, ",%f", (double)m->values[row * m->columns + col]);
scripts/load_data.c view on Meta::CPAN
void destroy(Matrix *m){
free(m->values);
free(m);
}
void print_values(Matrix *m){
int rows = 10;
int cols = m->columns;
for(int i = 0; i < rows; i++){
for(int j = 0; j < cols; j++){
fprintf(stderr, "%f\t", m->values[i * cols + j]);
}
fprintf(stderr, "\n");
}
}
int main(int argc, char *argv[]){
if (argc != 4) {
fprintf(stderr, "Usage: load <type> input-ubyte output-txt\n");
fprintf(stderr, "\ttype can be:\n");
fprintf(stderr, "\t\timages\n");
fprintf(stderr, "\t\tlabels\n");
exit(1);
}
char *path = argv[2];
Matrix *m;
if (strcmp(argv[1], "images") == 0) {
m = read_csv(path);
} else if (strcmp(argv[1], "labels") == 0) {
m = read_label_csv(path);
} else {
fprintf(stderr, "Unknown file type: %s\n", argv[1]);
}
save(m, argv[3]);
destroy(m);
return 0;
}
xt/author/00-compile.t view on Meta::CPAN
use File::Spec;
use IPC::Open3;
use IO::Handle;
open my $stdin, '<', File::Spec->devnull or die "can't open devnull: $!";
my @warnings;
for my $lib (@module_files)
{
# see L<perlfaq8/How can I capture STDERR from an external command?>
my $stderr = IO::Handle->new;
diag('Running: ', join(', ', map { my $str = $_; $str =~ s/'/\\'/g; q{'} . $str . q{'} }
$^X, @switches, '-e', "require q[$lib]"))
if $ENV{PERL_COMPILE_TEST_DEBUG};
my $pid = open3($stdin, '>&STDERR', $stderr, $^X, @switches, '-e', "require q[$lib]");
binmode $stderr, ':crlf' if $^O eq 'MSWin32';
my @_warnings = <$stderr>;
waitpid($pid, 0);
is($?, 0, "$lib loaded ok");
shift @_warnings if @_warnings and $_warnings[0] =~ /^Using .*\bblib/
and not eval { +require blib; blib->VERSION('1.01') };
if (@_warnings)
{
warn @_warnings;
push @warnings, @_warnings;
( run in 1.060 second using v1.01-cache-2.11-cpan-49f99fa48dc )