| | |
| | | #include "image.h" |
| | | #include "data.h" |
| | | #include "utils.h" |
| | | #include "params.h" |
| | | |
| | | #include "crop_layer.h" |
| | | #include "connected_layer.h" |
| | |
| | | #include "normalization_layer.h" |
| | | #include "softmax_layer.h" |
| | | #include "dropout_layer.h" |
| | | #include "route_layer.h" |
| | | |
| | | char *get_layer_string(LAYER_TYPE a) |
| | | { |
| | |
| | | return "crop"; |
| | | case COST: |
| | | return "cost"; |
| | | case ROUTE: |
| | | return "route"; |
| | | default: |
| | | break; |
| | | } |
| | |
| | | else if(net.types[i] == DROPOUT){ |
| | | forward_dropout_layer(*(dropout_layer *)net.layers[i], state); |
| | | } |
| | | else if(net.types[i] == ROUTE){ |
| | | forward_route_layer(*(route_layer *)net.layers[i], net); |
| | | } |
| | | state.input = get_network_output_layer(net, i); |
| | | } |
| | | } |
| | |
| | | return ((crop_layer *)net.layers[i]) -> output; |
| | | } else if(net.types[i] == NORMALIZATION){ |
| | | return ((normalization_layer *)net.layers[i]) -> output; |
| | | } else if(net.types[i] == ROUTE){ |
| | | return ((route_layer *)net.layers[i]) -> output; |
| | | } |
| | | return 0; |
| | | } |
| | |
| | | } else if(net.types[i] == CONNECTED){ |
| | | connected_layer layer = *(connected_layer *)net.layers[i]; |
| | | return layer.delta; |
| | | } else if(net.types[i] == ROUTE){ |
| | | return ((route_layer *)net.layers[i]) -> delta; |
| | | } |
| | | return 0; |
| | | } |
| | |
| | | else if(net.types[i] == CONNECTED){ |
| | | connected_layer layer = *(connected_layer *)net.layers[i]; |
| | | backward_connected_layer(layer, state); |
| | | } |
| | | else if(net.types[i] == COST){ |
| | | } else if(net.types[i] == COST){ |
| | | cost_layer layer = *(cost_layer *)net.layers[i]; |
| | | backward_cost_layer(layer, state); |
| | | } else if(net.types[i] == ROUTE){ |
| | | route_layer layer = *(route_layer *)net.layers[i]; |
| | | backward_route_layer(layer, net); |
| | | } |
| | | } |
| | | } |
| | |
| | | crop_layer *layer = (crop_layer *)net->layers[i]; |
| | | layer->batch = b; |
| | | } |
| | | else if(net->types[i] == ROUTE){ |
| | | route_layer *layer = (route_layer *)net->layers[i]; |
| | | layer->batch = b; |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | softmax_layer layer = *(softmax_layer *)net.layers[i]; |
| | | return layer.inputs; |
| | | } |
| | | else if(net.types[i] == ROUTE){ |
| | | route_layer layer = *(route_layer *)net.layers[i]; |
| | | return layer.outputs; |
| | | } |
| | | fprintf(stderr, "Can't find output size\n"); |
| | | return 0; |
| | | } |
| | | |
| | | int resize_network(network net, int h, int w, int c) |
| | | { |
| | | fprintf(stderr, "Might be broken, careful!!"); |
| | | int i; |
| | | for (i = 0; i < net.n; ++i){ |
| | | if(net.types[i] == CONVOLUTIONAL){ |
| | |
| | | crop_layer layer = *(crop_layer *)net.layers[i]; |
| | | return get_crop_image(layer); |
| | | } |
| | | else if(net.types[i] == ROUTE){ |
| | | route_layer layer = *(route_layer *)net.layers[i]; |
| | | return get_network_image_layer(net, layer.input_layers[0]); |
| | | } |
| | | return make_empty_image(0,0,0); |
| | | } |
| | | |