Joseph Redmon
2015-07-21 8ed0a5538e04002c95ff0757791c52b4ec9a3e96
src/convolutional_layer.c
@@ -61,7 +61,8 @@
    l.biases = calloc(n, sizeof(float));
    l.bias_updates = calloc(n, sizeof(float));
    float scale = 1./sqrt(size*size*c);
    //float scale = 1./sqrt(size*size*c);
    float scale = sqrt(2./(size*size*c));
    for(i = 0; i < c*n*size*size; ++i) l.filters[i] = 2*scale*rand_uniform() - scale;
    for(i = 0; i < n; ++i){
        l.biases[i] = scale;
@@ -96,12 +97,18 @@
    return l;
}
void resize_convolutional_layer(convolutional_layer *l, int h, int w)
void resize_convolutional_layer(convolutional_layer *l, int w, int h)
{
    l->h = h;
    l->w = w;
    int out_h = convolutional_out_height(*l);
    l->h = h;
    int out_w = convolutional_out_width(*l);
    int out_h = convolutional_out_height(*l);
    l->out_w = out_w;
    l->out_h = out_h;
    l->outputs = l->out_h * l->out_w * l->out_c;
    l->inputs = l->w * l->h * l->c;
    l->col_image = realloc(l->col_image,
                                out_h*out_w*l->size*l->size*l->c*sizeof(float));
@@ -115,9 +122,9 @@
    cuda_free(l->delta_gpu);
    cuda_free(l->output_gpu);
    l->col_image_gpu = cuda_make_array(l->col_image, out_h*out_w*l->size*l->size*l->c);
    l->delta_gpu = cuda_make_array(l->delta, l->batch*out_h*out_w*l->n);
    l->output_gpu = cuda_make_array(l->output, l->batch*out_h*out_w*l->n);
    l->col_image_gpu = cuda_make_array(0, out_h*out_w*l->size*l->size*l->c);
    l->delta_gpu = cuda_make_array(0, l->batch*out_h*out_w*l->n);
    l->output_gpu = cuda_make_array(0, l->batch*out_h*out_w*l->n);
    #endif
}
@@ -226,6 +233,17 @@
    return float_to_image(w,h,c,l.filters+i*h*w*c);
}
void rgbgr_filters(convolutional_layer l)
{
    int i;
    for(i = 0; i < l.n; ++i){
        image im = get_convolutional_filter(l, i);
        if (im.c == 3) {
            rgbgr_image(im);
        }
    }
}
image *get_filters(convolutional_layer l)
{
    image *filters = calloc(l.n, sizeof(image));