@@ -7360,36 +7360,7 @@ int model_tensor_input_ff_without_arrays(model* m, int tensor_depth, int tensor_
73607360 return 0;
73617361 }
73627362
7363- if(k3-count == m->rls[z]->n_cl-1){
7364- if(m->rls[z]->cls[k3-count]->pooling_flag){
7365- float* pooltemp_prev = m->rls[z]->cls[k3-count]->post_pooling;
7366- if(m->rls[z]->cls[k3-count]->convolutional_flag == NO_CONVOLUTION && m->rls[z]->cls[k3-count]->stride2_cols == 1 && m->rls[z]->cls[k3-count]->stride2_rows == 1 && m->rls[z]->cls[k3-count]->padding2_rows == 0 && m->rls[z]->cls[k3-count]->padding2_cols == 0 && m->rls[z]->cls[k3-count]->pooling_rows == 1 && m->rls[z]->cls[k3-count]->pooling_cols == 1){
7367- pooltemp_prev = m->rls[z]->cls[k3-count]->pooltemp;
7368- }
7369- sum1D(m->rls[z]->input,pooltemp_prev,m->rls[z]->cl_output->pre_activation,m->rls[z]->cls[k3-count]->n_kernels*m->rls[z]->cls[k3-count]->rows2*m->rls[z]->cls[k3-count]->cols2);
7370- }
7371- else if(m->rls[z]->cls[k3-count]->normalization_flag)
7372- sum1D(m->rls[z]->input,m->rls[z]->cls[k3-count]->post_normalization,m->rls[z]->cl_output->pre_activation,m->rls[z]->cls[k3-count]->n_kernels*m->rls[z]->cls[k3-count]->rows1*m->rls[z]->cls[k3-count]->cols1);
7373-
7374- else if(m->rls[z]->cls[k3-count]->activation_flag){
7375- sum1D(m->rls[z]->input,m->rls[z]->cls[k3-count]->post_activation,m->rls[z]->cl_output->pre_activation,m->rls[z]->cls[k3-count]->n_kernels*m->rls[z]->cls[k3-count]->rows1*m->rls[z]->cls[k3-count]->cols1);
7376- }
7377- else
7378- sum1D(m->rls[z]->input,m->rls[z]->cls[k3-count]->pre_activation,m->rls[z]->cl_output->pre_activation,m->rls[z]->cls[k3-count]->n_kernels*m->rls[z]->cls[k3-count]->rows1*m->rls[z]->cls[k3-count]->cols1);
7379-
7380- if(m->rls[z]->cl_output->activation_flag == LEAKY_RELU){
7381- leaky_relu_array(m->rls[z]->cl_output->pre_activation,m->rls[z]->cl_output->post_activation, m->rls[z]->cl_output->n_kernels*m->rls[z]->cl_output->rows1*m->rls[z]->cl_output->cols1);
7382- }
7383- else if(m->rls[z]->cl_output->activation_flag == RELU){
7384- relu_array(m->rls[z]->cl_output->pre_activation,m->rls[z]->cl_output->post_activation, m->rls[z]->cl_output->n_kernels*m->rls[z]->cl_output->rows1*m->rls[z]->cl_output->cols1);
7385- }
7386- else if(m->rls[z]->cl_output->activation_flag == ELU)
7387- elu_array(m->rls[z]->cl_output->pre_activation,m->rls[z]->cl_output->post_activation, m->rls[z]->cl_output->n_kernels*m->rls[z]->cl_output->rows1*m->rls[z]->cl_output->cols1,ELU_THRESHOLD);
7388- else if(m->rls[z]->cl_output->activation_flag == SIGMOID)
7389- sigmoid_array(m->rls[z]->cl_output->pre_activation,m->rls[z]->cl_output->post_activation, m->rls[z]->cl_output->n_kernels*m->rls[z]->cl_output->rows1*m->rls[z]->cl_output->cols1);
7390- else if(m->rls[z]->cl_output->activation_flag == TANH)
7391- tanhh_array(m->rls[z]->cl_output->pre_activation,m->rls[z]->cl_output->post_activation, m->rls[z]->cl_output->n_kernels*m->rls[z]->cl_output->rows1*m->rls[z]->cl_output->cols1);
7392- }
7363+
73937364
73947365 k3++;
73957366
@@ -7508,31 +7479,7 @@ int model_tensor_input_ff_without_arrays(model* m, int tensor_depth, int tensor_
75087479
75097480
75107481 if(m->sla[i-1][0] == FCLS){
7511- if(k3-count == 0){
7512- if(m->fcls[k1-1]->dropout_flag){
7513- if(m->fcls[k1-1]->activation_flag){
7514- dot1D(m->fcls[k1-1]->post_activation,m->fcls[k1-1]->dropout_mask,m->fcls[k1-1]->dropout_temp,m->rls[z]->channels*m->rls[z]->input_rows*m->rls[z]->input_cols);
7515- m->rls[z]->input = m->fcls[k1-1]->dropout_temp;
7516- }
7517- else{
7518- dot1D(m->fcls[k1-1]->pre_activation,m->fcls[k1-1]->dropout_mask,m->fcls[k1-1]->dropout_temp,m->rls[z]->channels*m->rls[z]->input_rows*m->rls[z]->input_cols);
7519- m->rls[z]->input = m->fcls[k1-1]->dropout_temp;
7520- }
7521- }
7522- else{
7523-
7524- if(m->fcls[k1-1]->normalization_flag){
7525- m->rls[z]->input = m->fcls[k1-1]->post_normalization;
7526- }
7527-
7528- else if(m->fcls[k1-1]->activation_flag){
7529- m->rls[z]->input = m->fcls[k1-1]->post_activation;
7530- }
7531- else{
7532- m->rls[z]->input = m->fcls[k1-1]->pre_activation;
7533- }
7534- }
7535- }
7482+
75367483
75377484 if(!ff_fcl_cl_without_arrays(m->fcls[k1-1],m->rls[z]->cls[k3-count])){
75387485 free(temp);
@@ -7541,25 +7488,7 @@ int model_tensor_input_ff_without_arrays(model* m, int tensor_depth, int tensor_
75417488 }
75427489
75437490 else if(m->sla[i-1][0] == CLS){
7544- if(k3-count == 0){
7545- if(m->cls[k2-1]->pooling_flag){
7546- float* pooltemp_prev = m->cls[k2-1]->post_pooling;
7547- if(m->cls[k2-1]->convolutional_flag == NO_CONVOLUTION && m->cls[k2-1]->stride2_cols == 1 && m->cls[k2-1]->stride2_rows == 1 && m->cls[k2-1]->padding2_rows == 0 && m->cls[k2-1]->padding2_cols == 0 && m->cls[k2-1]->pooling_rows == 1 && m->cls[k2-1]->pooling_cols == 1){
7548- pooltemp_prev = m->cls[k2-1]->pooltemp;
7549- }
7550- m->rls[z]->input = pooltemp_prev;
7551- }
7552- else if(m->cls[k2-1]->normalization_flag){
7553- m->rls[z]->input = m->cls[k2-1]->post_normalization;
7554- }
7555-
7556- else if(m->cls[k2-1]->activation_flag){
7557- m->rls[z]->input = m->cls[k2-1]->post_activation;
7558- }
7559- else{
7560- m->rls[z]->input = m->cls[k2-1]->pre_activation;
7561- }
7562- }
7491+
75637492 if(!ff_cl_cl_without_arrays(m->cls[k2-1],m->rls[z]->cls[k3-count])){
75647493 free(temp);
75657494 return 0;
@@ -7596,40 +7525,7 @@ int model_tensor_input_ff_without_arrays(model* m, int tensor_depth, int tensor_
75967525 }
75977526 }
75987527
7599- if(k3-count == m->rls[z]->n_cl-1){
7600- if(m->rls[z]->cls[k3-count]->pooling_flag){
7601- float* pooltemp_prev = m->rls[z]->cls[k3-count]->post_pooling;
7602- if(m->rls[z]->cls[k3-count]->convolutional_flag == NO_CONVOLUTION && m->rls[z]->cls[k3-count]->stride2_cols == 1 && m->rls[z]->cls[k3-count]->stride2_rows == 1 && m->rls[z]->cls[k3-count]->padding2_rows == 0 && m->rls[z]->cls[k3-count]->padding2_cols == 0 && m->rls[z]->cls[k3-count]->pooling_rows == 1 && m->rls[z]->cls[k3-count]->pooling_cols == 1){
7603- pooltemp_prev = m->rls[z]->cls[k3-count]->pooltemp;
7604- }
7605- sum1D(m->rls[z]->input,pooltemp_prev,m->rls[z]->cl_output->pre_activation,m->rls[z]->cls[k3-count]->n_kernels*m->rls[z]->cls[k3-count]->rows2*m->rls[z]->cls[k3-count]->cols2);
7606- //printf("summing from previous pooling\n");
7607- }
7608- else if(m->rls[z]->cls[k3-count]->normalization_flag)
7609- sum1D(m->rls[z]->input,m->rls[z]->cls[k3-count]->post_normalization,m->rls[z]->cl_output->pre_activation,m->rls[z]->cls[k3-count]->n_kernels*m->rls[z]->cls[k3-count]->rows1*m->rls[z]->cls[k3-count]->cols1);
7610- else if(m->rls[z]->cls[k3-count]->activation_flag){
7611- sum1D(m->rls[z]->input,m->rls[z]->cls[k3-count]->post_activation,m->rls[z]->cl_output->pre_activation,m->rls[z]->cls[k3-count]->n_kernels*m->rls[z]->cls[k3-count]->rows1*m->rls[z]->cls[k3-count]->cols1);
7612- //printf("summing from previous activation\n");
7613- }
7614- else
7615- sum1D(m->rls[z]->input,m->rls[z]->cls[k3-count]->pre_activation,m->rls[z]->cl_output->pre_activation,m->rls[z]->cls[k3-count]->n_kernels*m->rls[z]->cls[k3-count]->rows1*m->rls[z]->cls[k3-count]->cols1);
7616-
7617- if(m->rls[z]->cl_output->activation_flag == LEAKY_RELU){
7618- leaky_relu_array(m->rls[z]->cl_output->pre_activation,m->rls[z]->cl_output->post_activation, m->rls[z]->cl_output->n_kernels*m->rls[z]->cl_output->rows1*m->rls[z]->cl_output->cols1);
7619- //printf("applying leaky relu rls\n");
7620- }
7621- else if(m->rls[z]->cl_output->activation_flag == RELU){
7622- relu_array(m->rls[z]->cl_output->pre_activation,m->rls[z]->cl_output->post_activation, m->rls[z]->cl_output->n_kernels*m->rls[z]->cl_output->rows1*m->rls[z]->cl_output->cols1);
7623- //printf("applying relu rls\n");
7624- }
7625- else if(m->rls[z]->cl_output->activation_flag == ELU)
7626- elu_array(m->rls[z]->cl_output->pre_activation,m->rls[z]->cl_output->post_activation, m->rls[z]->cl_output->n_kernels*m->rls[z]->cl_output->rows1*m->rls[z]->cl_output->cols1,ELU_THRESHOLD);
7627- else if(m->rls[z]->cl_output->activation_flag == SIGMOID)
7628- sigmoid_array(m->rls[z]->cl_output->pre_activation,m->rls[z]->cl_output->post_activation, m->rls[z]->cl_output->n_kernels*m->rls[z]->cl_output->rows1*m->rls[z]->cl_output->cols1);
7629- else if(m->rls[z]->cl_output->activation_flag == TANH)
7630- tanhh_array(m->rls[z]->cl_output->pre_activation,m->rls[z]->cl_output->post_activation, m->rls[z]->cl_output->n_kernels*m->rls[z]->cl_output->rows1*m->rls[z]->cl_output->cols1);
7631-
7632- }
7528+
76337529
76347530 k3++;
76357531
@@ -9208,6 +9104,24 @@ void make_the_model_only_for_ff(model* m){
92089104 }
92099105}
92109106
9107+ void inference_model(model* m){
9108+ if(m == NULL)
9109+ return;
9110+ int i,j;
9111+ for(i = 0; i < m->n_fcl; i++){
9112+ inference_fcl(m->fcls[i]);
9113+ }
9114+ }
9115+
9116+ void train_model(model* m){
9117+ if(m == NULL)
9118+ return;
9119+ int i,j;
9120+ for(i = 0; i < m->n_fcl; i++){
9121+ train_fcl(m->fcls[i]);
9122+ }
9123+ }
9124+
92119125void set_model_beta(model* m, float beta1, float beta2){
92129126 if(m == NULL)
92139127 return;
0 commit comments