Joseph Redmon
2016-07-19 9361292c429c0ba3400c31c7fa5d5e3d3cb6ab47
src/convolutional_layer.c
@@ -45,6 +45,14 @@
    }
}
void binarize_cpu(float *input, int n, float *binary)
{
    int i;
    for(i = 0; i < n; ++i){
        binary[i] = (input[i] > 0) ? 1 : -1;
    }
}
void binarize_input(float *input, int n, int size, float *binary)
{
    int i, s;
@@ -293,6 +301,9 @@
            l.filters[i*l.c*l.size*l.size + j] *= scale;
        }
        l.biases[i] -= l.rolling_mean[i] * scale;
        l.scales[i] = 1;
        l.rolling_mean[i] = 0;
        l.rolling_variance[i] = 1;
    }
}
@@ -426,12 +437,10 @@
       }
     */
    if(l.xnor && (l.c%32 != 0 || !AI2)){
    if(l.xnor){
        binarize_filters(l.filters, l.n, l.c*l.size*l.size, l.binary_filters);
        swap_binary(&l);
        for(i = 0; i < l.batch; ++i){
            binarize_input(state.input + i*l.inputs, l.c, l.h*l.w, l.binary_input + i*l.inputs);
        }
        binarize_cpu(state.input, l.c*l.h*l.w*l.batch, l.binary_input);
        state.input = l.binary_input;
    }