Optimized resizing of region_layer for random=1

pull/492/head
AlexeyAB 7 years ago
parent 4b0be8c701
commit e4ab47dfce
  1. 1
      src/network.c
  2. 12
      src/region_layer.c

@ -378,6 +378,7 @@ int resize_network(network *net, int w, int h)
} }
#ifdef GPU #ifdef GPU
if(gpu_index >= 0){ if(gpu_index >= 0){
printf(" try to allocate workspace, ");
net->workspace = cuda_make_array(0, (workspace_size-1)/sizeof(float)+1); net->workspace = cuda_make_array(0, (workspace_size-1)/sizeof(float)+1);
printf(" CUDA allocate done! \n"); printf(" CUDA allocate done! \n");
}else { }else {

@ -53,6 +53,8 @@ region_layer make_region_layer(int batch, int w, int h, int n, int classes, int
void resize_region_layer(layer *l, int w, int h) void resize_region_layer(layer *l, int w, int h)
{ {
int old_w = l->w;
int old_h = l->h;
l->w = w; l->w = w;
l->h = h; l->h = h;
@ -63,11 +65,13 @@ void resize_region_layer(layer *l, int w, int h)
l->delta = realloc(l->delta, l->batch*l->outputs*sizeof(float)); l->delta = realloc(l->delta, l->batch*l->outputs*sizeof(float));
#ifdef GPU #ifdef GPU
cuda_free(l->delta_gpu); if (old_w < w || old_h < h) {
cuda_free(l->output_gpu); cuda_free(l->delta_gpu);
cuda_free(l->output_gpu);
l->delta_gpu = cuda_make_array(l->delta, l->batch*l->outputs); l->delta_gpu = cuda_make_array(l->delta, l->batch*l->outputs);
l->output_gpu = cuda_make_array(l->output, l->batch*l->outputs); l->output_gpu = cuda_make_array(l->output, l->batch*l->outputs);
}
#endif #endif
} }

Loading…
Cancel
Save