mirror of
https://github.com/glouw/tinn
synced 2024-11-24 23:39:38 +03:00
remove superflous safety
This commit is contained in:
parent
87a032a14a
commit
df1b13c593
40
Tinn.c
40
Tinn.c
@ -93,34 +93,6 @@ static void twrand(const Tinn t)
|
|||||||
for(int i = 0; i < t.nb; i++) t.b[i] = frand() - 0.5f;
|
for(int i = 0; i < t.nb; i++) t.b[i] = frand() - 0.5f;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Prints a message and exits.
|
|
||||||
static void bomb(const char* const message, ...)
|
|
||||||
{
|
|
||||||
va_list args;
|
|
||||||
va_start(args, message);
|
|
||||||
vprintf(message, args);
|
|
||||||
va_end(args);
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fail safe file opening.
|
|
||||||
static FILE* efopen(const char* const pathname, const char* const mode)
|
|
||||||
{
|
|
||||||
FILE* const file = fopen(pathname, mode);
|
|
||||||
if(file == NULL)
|
|
||||||
bomb("failure: fopen(\"%s\", \"%s\")\n", pathname, mode);
|
|
||||||
return file;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fail safe clear allocation.
|
|
||||||
static void* ecalloc(const size_t nmemb, const size_t size)
|
|
||||||
{
|
|
||||||
void* const mem = calloc(nmemb, size);
|
|
||||||
if(mem == NULL)
|
|
||||||
bomb("failure: calloc(%d, %d)\n", nmemb, size);
|
|
||||||
return mem;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Returns an output prediction given an input.
|
// Returns an output prediction given an input.
|
||||||
float* xtpredict(const Tinn t, const float* const in)
|
float* xtpredict(const Tinn t, const float* const in)
|
||||||
{
|
{
|
||||||
@ -146,11 +118,11 @@ Tinn xtbuild(const int nips, const int nhid, const int nops)
|
|||||||
// Tinn only supports one hidden layer so there are two biases.
|
// Tinn only supports one hidden layer so there are two biases.
|
||||||
t.nb = 2;
|
t.nb = 2;
|
||||||
t.nw = nhid * (nips + nops);
|
t.nw = nhid * (nips + nops);
|
||||||
t.w = (float*) ecalloc(t.nw, sizeof(*t.w));
|
t.w = (float*) calloc(t.nw, sizeof(*t.w));
|
||||||
t.x = t.w + nhid * nips;
|
t.x = t.w + nhid * nips;
|
||||||
t.b = (float*) ecalloc(t.nb, sizeof(*t.b));
|
t.b = (float*) calloc(t.nb, sizeof(*t.b));
|
||||||
t.h = (float*) ecalloc(nhid, sizeof(*t.h));
|
t.h = (float*) calloc(nhid, sizeof(*t.h));
|
||||||
t.o = (float*) ecalloc(nops, sizeof(*t.o));
|
t.o = (float*) calloc(nops, sizeof(*t.o));
|
||||||
t.nips = nips;
|
t.nips = nips;
|
||||||
t.nhid = nhid;
|
t.nhid = nhid;
|
||||||
t.nops = nops;
|
t.nops = nops;
|
||||||
@ -161,7 +133,7 @@ Tinn xtbuild(const int nips, const int nhid, const int nops)
|
|||||||
// Saves the tinn to disk.
|
// Saves the tinn to disk.
|
||||||
void xtsave(const Tinn t, const char* const path)
|
void xtsave(const Tinn t, const char* const path)
|
||||||
{
|
{
|
||||||
FILE* const file = efopen(path, "w");
|
FILE* const file = fopen(path, "w");
|
||||||
// Header.
|
// Header.
|
||||||
fprintf(file, "%d %d %d\n", t.nips, t.nhid, t.nops);
|
fprintf(file, "%d %d %d\n", t.nips, t.nhid, t.nops);
|
||||||
// Biases and weights.
|
// Biases and weights.
|
||||||
@ -173,7 +145,7 @@ void xtsave(const Tinn t, const char* const path)
|
|||||||
// Loads a new tinn from disk.
|
// Loads a new tinn from disk.
|
||||||
Tinn xtload(const char* const path)
|
Tinn xtload(const char* const path)
|
||||||
{
|
{
|
||||||
FILE* const file = efopen(path, "r");
|
FILE* const file = fopen(path, "r");
|
||||||
int nips = 0;
|
int nips = 0;
|
||||||
int nhid = 0;
|
int nhid = 0;
|
||||||
int nops = 0;
|
int nops = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user