aboutsummaryrefslogblamecommitdiff
path: root/nerv/lib/matrix/generic/mmatrix.h
blob: 2a3fea8f0f04feb382b459e90c1643115fe253c0 (plain) (tree)
1
2
3
4
5
6
7
8

                                
 

                                                                   
                                                               

                                                                   



                                                               
                                                                

                                                                   









                                                                   
 



                                                                           
                                                           

                                                                           
                                                                  
                                                               
                                                                   
                                                               

                                                                   

                                                               
                                                                                
                                                                                     
                                                         
                                                                

                                                                          
                                                                        
                                                               
 

                                                               
 

                                                                   
                                                                     

                                                                           
                                                         
                                                                         
                                                            
                                                                             

                                                                             
                                                                
                                                                       
                                                                


                                                                                         
#include "../../common.h"
#include "../../io/chunk_file.h"

void nerv_matrix_(add)(Matrix *c, const Matrix *a, const Matrix *b,
                            MATRIX_ELEM alpha, MATRIX_ELEM beta,
                            MContext *context, Status *status);
void nerv_matrix_(mul)(Matrix *c, const Matrix *a, const Matrix *b,
                            MATRIX_ELEM alpha, MATRIX_ELEM beta,
                            int ta, int tb,
                            MContext *context, Status *status);
void nerv_matrix_(sigmoid)(Matrix *a, const Matrix *b,
                            MContext *context, Status *status);
void nerv_matrix_(sigmoid_grad)(Matrix *nerr, const Matrix *err,
                                const Matrix *output,
                                MContext *context, Status *status);
void nerv_matrix_(tanh)(Matrix *a, const Matrix *b,
                            MContext *context, Status *status);
void nerv_matrix_(tanh_grad)(Matrix *nerr, const Matrix *err,
                                const Matrix *output,
                                MContext *context, Status *status);
void nerv_matrix_(relu)(Matrix *a, const Matrix *b,
                            MContext *context, Status *status);
void nerv_matrix_(relu_grad)(Matrix *nerr, const Matrix *err,
                                const Matrix *output,
                                MContext *context, Status *status);

Matrix *nerv_matrix_(softmax)(Matrix *b, const Matrix *a,
                                MContext *context, Status *status);
Matrix *nerv_matrix_(rowsum)(Matrix *a, MContext *context, Status *status);
Matrix *nerv_matrix_(colsum)(Matrix *a, MContext *context, Status *status);
Matrix *nerv_matrix_(colsame)(Matrix *a, const Matrix *ref,
                                MContext *context, Status *status);
Matrix *nerv_matrix_(rowmax)(Matrix *a, MContext *context, Status *status);
void nerv_matrix_(rowmax_idx)(Matrix *a, Matrix **b, Matrix **idx,
                            MContext *context, Status *status);
void nerv_matrix_(add_row)(Matrix *b, const Matrix *a, double beta,
                            MContext *context, Status *status);
void nerv_matrix_(add_col)(Matrix *b, const Matrix *a, double beta,
                            MContext *context, Status *status);
void nerv_matrix_(clip)(Matrix *self, double val1, double val2,
                        MContext *context, Status *status);
void nerv_matrix_(diagonalize)(Matrix *self, MContext *context, Status *status);
void nerv_matrix_(fill)(Matrix *self, double val, MContext *context, Status *status);
void nerv_matrix_(copy_fromh)(Matrix *a, const Matrix *b,
                            int a_begin, int b_begin, int b_end,
                            MContext *context, Status *status);
Matrix *nerv_matrix_(trans)(Matrix *a, MContext *context, Status *status);
void nerv_matrix_(mul_elem)(Matrix *c, const Matrix *a, const Matrix *b,
                            MContext *context, Status *status);

void nerv_matrix_(log_elem)(Matrix *b, const Matrix *a,
                            MContext *context, Status *status);

Matrix *nerv_matrix_(decompress)(const Matrix *a, int orig_col,
                                MContext *context, Status *status);
void nerv_matrix_(copy_rows_fromh_by_idx)(Matrix *a, const Matrix *b,
                                        const Matrix *idx, int b_begin,
                                        MContext *context, Status *status);
void nerv_matrix_(expand_frm)(Matrix *a, const Matrix *b,
                            int cont, MContext *context, Status *status);
void nerv_matrix_(rearrange_frm)(Matrix *a, const Matrix *b,
                                int step, MContext *context, Status *status);
void nerv_matrix_(set_values_by_mask)(Matrix *a, const Matrix *b, double val,
                                    MContext *context, Status *status);
void nerv_matrix_(scale_rows_by_col)(Matrix *a, const Matrix *b,
                                    MContext *context, Status *status);
void nerv_matrix_(scale_rows_by_row)(Matrix *a, const Matrix *b,
                                    MContext *context, Status *status);
Matrix *nerv_matrix_(load)(ChunkData *cdp, MContext *context, Status *status);
void nerv_matrix_(save)(Matrix *self, ChunkFile *cfp, MContext *context, Status *status);