| | |
| | | #include "shortcut_layer.h" |
| | | #include "softmax_layer.h" |
| | | #include "utils.h" |
| | | #include <stdint.h> |
| | | |
| | | typedef struct{ |
| | | char *type; |
| | |
| | | net->saturation = option_find_float_quiet(options, "saturation", 1); |
| | | net->exposure = option_find_float_quiet(options, "exposure", 1); |
| | | net->hue = option_find_float_quiet(options, "hue", 0); |
| | | net->power = option_find_float_quiet(options, "power", 4); |
| | | |
| | | if(!net->inputs && !(net->h && net->w && net->c)) error("No input parameters supplied"); |
| | | |
| | |
| | | net->gamma = option_find_float(options, "gamma", 1); |
| | | net->step = option_find_int(options, "step", 1); |
| | | } else if (net->policy == POLY || net->policy == RANDOM){ |
| | | net->power = option_find_float(options, "power", 1); |
| | | //net->power = option_find_float(options, "power", 1); |
| | | } |
| | | net->max_batches = option_find_int(options, "max_batches", 0); |
| | | } |
| | |
| | | |
| | | network parse_network_cfg(char *filename) |
| | | { |
| | | return parse_network_cfg_custom(filename, 0); |
| | | } |
| | | |
| | | network parse_network_cfg_custom(char *filename, int batch) |
| | | { |
| | | list *sections = read_cfg(filename); |
| | | node *n = sections->front; |
| | | if(!n) error("Config file has no sections"); |
| | |
| | | params.w = net.w; |
| | | params.c = net.c; |
| | | params.inputs = net.inputs; |
| | | if (batch > 0) net.batch = batch; |
| | | params.batch = net.batch; |
| | | params.time_steps = net.time_steps; |
| | | params.net = net; |
| | |
| | | }else{ |
| | | fprintf(stderr, "Type not recognized: %s\n", s->type); |
| | | } |
| | | l.onlyforward = option_find_int_quiet(options, "onlyforward", 0); |
| | | l.stopbackward = option_find_int_quiet(options, "stopbackward", 0); |
| | | l.dontload = option_find_int_quiet(options, "dontload", 0); |
| | | l.dontloadscales = option_find_int_quiet(options, "dontloadscales", 0); |
| | | option_unused(options); |
| | |
| | | return net; |
| | | } |
| | | |
| | | |
| | | |
| | | list *read_cfg(char *filename) |
| | | { |
| | | FILE *file = fopen(filename, "r"); |
| | |
| | | } |
| | | #endif |
| | | fprintf(stderr, "Saving weights to %s\n", filename); |
| | | FILE *fp = fopen(filename, "w"); |
| | | FILE *fp = fopen(filename, "wb"); |
| | | if(!fp) file_error(filename); |
| | | |
| | | int major = 0; |
| | |
| | | //return; |
| | | } |
| | | int num = l.n*l.c*l.size*l.size; |
| | | if(0){ |
| | | fread(l.biases + ((l.n != 1374)?0:5), sizeof(float), l.n, fp); |
| | | if (l.batch_normalize && (!l.dontloadscales)){ |
| | | fread(l.scales + ((l.n != 1374)?0:5), sizeof(float), l.n, fp); |
| | | fread(l.rolling_mean + ((l.n != 1374)?0:5), sizeof(float), l.n, fp); |
| | | fread(l.rolling_variance + ((l.n != 1374)?0:5), sizeof(float), l.n, fp); |
| | | fread(l.biases, sizeof(float), l.n, fp); |
| | | if (l.batch_normalize && (!l.dontloadscales)){ |
| | | fread(l.scales, sizeof(float), l.n, fp); |
| | | fread(l.rolling_mean, sizeof(float), l.n, fp); |
| | | fread(l.rolling_variance, sizeof(float), l.n, fp); |
| | | if(0){ |
| | | int i; |
| | | for(i = 0; i < l.n; ++i){ |
| | | printf("%g, ", l.rolling_mean[i]); |
| | | } |
| | | printf("\n"); |
| | | for(i = 0; i < l.n; ++i){ |
| | | printf("%g, ", l.rolling_variance[i]); |
| | | } |
| | | printf("\n"); |
| | | } |
| | | fread(l.weights + ((l.n != 1374)?0:5*l.c*l.size*l.size), sizeof(float), num, fp); |
| | | }else{ |
| | | fread(l.biases, sizeof(float), l.n, fp); |
| | | if (l.batch_normalize && (!l.dontloadscales)){ |
| | | fread(l.scales, sizeof(float), l.n, fp); |
| | | fread(l.rolling_mean, sizeof(float), l.n, fp); |
| | | fread(l.rolling_variance, sizeof(float), l.n, fp); |
| | | if(0){ |
| | | fill_cpu(l.n, 0, l.rolling_mean, 1); |
| | | fill_cpu(l.n, 0, l.rolling_variance, 1); |
| | | } |
| | | fread(l.weights, sizeof(float), num, fp); |
| | | } |
| | | fread(l.weights, sizeof(float), num, fp); |
| | | if(l.adam){ |
| | | fread(l.m, sizeof(float), num, fp); |
| | | fread(l.v, sizeof(float), num, fp); |
| | |
| | | fread(&major, sizeof(int), 1, fp); |
| | | fread(&minor, sizeof(int), 1, fp); |
| | | fread(&revision, sizeof(int), 1, fp); |
| | | fread(net->seen, sizeof(int), 1, fp); |
| | | if ((major * 10 + minor) >= 2) { |
| | | printf("\n seen 64 \n"); |
| | | uint64_t iseen = 0; |
| | | fread(&iseen, sizeof(uint64_t), 1, fp); |
| | | *net->seen = iseen; |
| | | } |
| | | else { |
| | | printf("\n seen 32 \n"); |
| | | fread(net->seen, sizeof(int), 1, fp); |
| | | } |
| | | int transpose = (major > 1000) || (minor > 1000); |
| | | |
| | | int i; |