| | |
| | | |
| | | connected_layer *make_connected_layer(int batch, int inputs, int outputs, ACTIVATION activation, float learning_rate, float momentum, float decay) |
| | | { |
| | | fprintf(stderr, "Connected Layer: %d inputs, %d outputs\n", inputs, outputs); |
| | | int i; |
| | | connected_layer *layer = calloc(1, sizeof(connected_layer)); |
| | | |
| | |
| | | layer->delta_cl = cl_make_array(layer->delta, outputs*batch); |
| | | #endif |
| | | layer->activation = activation; |
| | | fprintf(stderr, "Connected Layer: %d inputs, %d outputs\n", inputs, outputs); |
| | | return layer; |
| | | } |
| | | |
| | |
| | | { |
| | | cl_read_array(layer.weights_cl, layer.weights, layer.inputs*layer.outputs); |
| | | cl_read_array(layer.biases_cl, layer.biases, layer.outputs); |
| | | cl_read_array(layer.weight_updates_cl, layer.weight_updates, layer.inputs*layer.outputs); |
| | | cl_read_array(layer.bias_updates_cl, layer.bias_updates, layer.outputs); |
| | | } |
| | | |
| | | void push_connected_layer(connected_layer layer) |
| | | { |
| | | cl_write_array(layer.weights_cl, layer.weights, layer.inputs*layer.outputs); |
| | | cl_write_array(layer.biases_cl, layer.biases, layer.outputs); |
| | | cl_write_array(layer.weight_updates_cl, layer.weight_updates, layer.inputs*layer.outputs); |
| | | cl_write_array(layer.bias_updates_cl, layer.bias_updates, layer.outputs); |
| | | } |
| | | |
| | | void update_connected_layer_gpu(connected_layer layer) |