     const size_t num_out_neurons = output_size[0]*output_size[1]*output_size[2];
     const size_t size = filter_size[0]*filter_size[1]*input_size[2]*output_size[2];
 
-    conv_add_layer(fp, num_out_neurons, num_pixels, size, output_size[2], CONV, RELU);
+    conv_add_layer(fp, num_out_neurons, num_pixels, size, output_size[2], CONV, activation);
 
     layer_t* current_layer = fp->layers[fp->numlayers - 1];
 


    layer->filter_weights = nullptr;
    layer->filter_bias = nullptr;

    layer->input_size = nullptr;
    layer->output_size = nullptr;

    fppoly_t* const fp = fppoly_of_abstract0(element);
    fp->layers = (layer_t**) malloc(2000*sizeof(layer_t*));

    layer_create_sparse_exprs(fp, filter_weights, filter_bias, input_size, filter_size, num_filters, strides, is_valid_padding, has_bias, RELU);

    fp->layers[fp->numlayers - 1]->predecessors = predecessors;

