| | |
| | | #include "softmax_layer.h" |
| | | #include "dropout_layer.h" |
| | | |
| | | char *get_layer_string(LAYER_TYPE a) |
| | | { |
| | | switch(a){ |
| | | case CONVOLUTIONAL: |
| | | return "convolutional"; |
| | | case CONNECTED: |
| | | return "connected"; |
| | | case MAXPOOL: |
| | | return "maxpool"; |
| | | case SOFTMAX: |
| | | return "softmax"; |
| | | case NORMALIZATION: |
| | | return "normalization"; |
| | | case DROPOUT: |
| | | return "dropout"; |
| | | case FREEWEIGHT: |
| | | return "freeweight"; |
| | | case CROP: |
| | | return "crop"; |
| | | case COST: |
| | | return "cost"; |
| | | default: |
| | | break; |
| | | } |
| | | return "none"; |
| | | } |
| | | |
| | | |
| | | |
| | | network make_network(int n, int batch) |
| | | { |
| | | network net; |
| | |
| | | if(!train) continue; |
| | | dropout_layer layer = *(dropout_layer *)net.layers[i]; |
| | | forward_dropout_layer(layer, input); |
| | | input = layer.output; |
| | | } |
| | | else if(net.types[i] == FREEWEIGHT){ |
| | | if(!train) continue; |
| | |
| | | } |
| | | else if(net.types[i] == CONNECTED){ |
| | | connected_layer layer = *(connected_layer *)net.layers[i]; |
| | | //secret_update_connected_layer((connected_layer *)net.layers[i]); |
| | | update_connected_layer(layer); |
| | | } |
| | | } |
| | |
| | | softmax_layer layer = *(softmax_layer *)net.layers[i]; |
| | | return layer.output; |
| | | } else if(net.types[i] == DROPOUT){ |
| | | return get_network_output_layer(net, i-1); |
| | | dropout_layer layer = *(dropout_layer *)net.layers[i]; |
| | | return layer.output; |
| | | } else if(net.types[i] == FREEWEIGHT){ |
| | | return get_network_output_layer(net, i-1); |
| | | } else if(net.types[i] == CONNECTED){ |
| | |
| | | softmax_layer layer = *(softmax_layer *)net.layers[i]; |
| | | return layer.delta; |
| | | } else if(net.types[i] == DROPOUT){ |
| | | if(i == 0) return 0; |
| | | return get_network_delta_layer(net, i-1); |
| | | } else if(net.types[i] == FREEWEIGHT){ |
| | | return get_network_delta_layer(net, i-1); |
| | |
| | | cost_layer *layer = (cost_layer *)net->layers[i]; |
| | | layer->batch = b; |
| | | } |
| | | else if(net->types[i] == CROP){ |
| | | crop_layer *layer = (crop_layer *)net->layers[i]; |
| | | layer->batch = b; |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | } |
| | | printf("%5d %5d\n%5d %5d\n", a, b, c, d); |
| | | float num = pow((abs(b - c) - 1.), 2.); |
| | | float den = b + c; |
| | | printf("%f\n", num/den); |
| | | } |
| | | |
| | | float network_accuracy(network net, data d) |