13 assert(inputs%groups == 0);
14 fprintf(stderr,
"softmax %4d\n", inputs);
21 l.
loss = calloc(inputs*batch,
sizeof(
float));
22 l.
output = calloc(inputs*batch,
sizeof(
float));
23 l.
delta = calloc(inputs*batch,
sizeof(
float));
24 l.
cost = calloc(1,
sizeof(
float));
32 l.output_gpu = cuda_make_array(l.
output, inputs*batch);
33 l.loss_gpu = cuda_make_array(l.
loss, inputs*batch);
34 l.delta_gpu = cuda_make_array(l.
delta, inputs*batch);
void(* forward_gpu)(struct layer, struct network)
void(* backward_gpu)(struct layer, struct network)
void axpy_gpu(int N, float ALPHA, float *X, int INCX, float *Y, int INCY)
void backward_softmax_layer(const softmax_layer l, network net)
void(* forward)(struct layer, struct network)
void softmax_x_ent_cpu(int n, float *pred, float *truth, float *delta, float *error)
void softmax_x_ent_gpu(int n, float *pred, float *truth, float *delta, float *error)
void forward_softmax_layer(const softmax_layer l, network net)
void softmax_cpu(float *input, int n, int batch, int batch_offset, int groups, int group_offset, int stride, float temp, float *output)
void axpy_cpu(int N, float ALPHA, float *X, int INCX, float *Y, int INCY)
void(* backward)(struct layer, struct network)
float sum_array(float *a, int n)
softmax_layer make_softmax_layer(int batch, int inputs, int groups)
void mask_gpu(int N, float *X, float mask_num, float *mask, float val)
void softmax_gpu(float *input, int n, int batch, int batch_offset, int groups, int group_offset, int stride, float temp, float *output)
void softmax_tree(float *input, int spatial, int batch, int stride, float temp, float *output, tree hier)