AlexeyAB
2017-09-14 e8dd9dd877a3cf370ed78a9b3a78935e9f994f28
src/parser.c
@@ -29,6 +29,7 @@
#include "shortcut_layer.h"
#include "softmax_layer.h"
#include "utils.h"
#include <stdint.h>
typedef struct{
    char *type;
@@ -238,9 +239,6 @@
    int classes = option_find_int(options, "classes", 20);
    int num = option_find_int(options, "num", 1);
    params.w = option_find_int(options, "side", params.w);
    params.h = option_find_int(options, "side", params.h);
    layer l = make_region_layer(params.batch, params.w, params.h, num, classes, coords);
    assert(l.outputs == params.inputs);
@@ -829,7 +827,7 @@
    }
#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;
@@ -969,23 +967,28 @@
        //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);
@@ -1021,7 +1024,14 @@
    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) {
      fread(net->seen, sizeof(uint64_t), 1, fp);
   }
   else {
      int iseen = 0;
      fread(&iseen, sizeof(int), 1, fp);
      *net->seen = iseen;
   }
    int transpose = (major > 1000) || (minor > 1000);
    int i;