# Edge-Engine ## Edge : 一个开源的科学计算引擎 [![license](https://img.shields.io/github/license/mashape/apistatus.svg?maxAge=2592000) ](https://github.com/AllenZYJ/Edge-Computing-Engine/blob/add-license-1/LICENSE)![](https://img.shields.io/badge/Bulid-Version1.0-green.svg) > 项目开始日期 : 2019/10/01 > 目前项目总代码 : 709 行 > > 测试代码 : 810 行 > > 测试环境: > > MacBook Pro > > 编译器环境: > > Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/c++/4.2.1 > Apple LLVM version 10.0.1 (clang-1001.0.46.4) > Target: x86_64-apple-darwin18.7.0 > Thread model: posix > > 目前实现的: How to install and run the demo: `git clone git@github.com:AllenZYJ/Edge-Computing-Engine.git` `cd to this dir ` `g++ main.cpp -o main` `./main` Matrix API: - [x] Matrix read_csv(string &file_path) - [x] Create a matrix : create(row,cols) - [x] Change the element for matrix void move_ele(int &ele1, int &ele2) - [x] Matrix1+Matrix2 : Matrix add(Matrix mid1,Matrix mid2,int flag=1) - [x] Flag is how to compete the ele ,default 1 ,bitwise operation(位运算加速). - [x] Matrix1-Matrix2 : Matrix subtract(Matrix mid1,Matrix mid2) - [x] Matrix1*Matrix2 : Matrix mul(Matrix mid1,Matrix mid2) - [x] Matrix1*n : Matrix times_mat(int times,Matrix mid1) - [x] Matrix1's Transposition : Matrix get_T(Matrix mid1) - [x] Mul(matrix1,matrix2) - [x] double* flatten(Matrix mid1) : Return a flattened array. - [x] Matrix matrix_rs(Matrix mid1,int rs_row,int rs_col) - [x] double matrix_sum(Matrix mid1) - [x] double matrix_mean(Matrix mid1) - [x] Matrix appply(Matrix mid1,Matrix mid2,int axis = 0) - [x] Matrix iloc(Matrix mid1,int start_x=0,int end_x=0,int start_y=0,int end_y=0) ## Demo: mat*mat Matrix **A**: | 第1列 | 第2列 | 第3列 | 第4列 | 第5列 | | ------- | ------- | ------- | ------- | ------- | | 72.0000 | 0.0000 | 0.0000 | 0.0000 | 0.0000 | | 0.0000 | 64.0000 | 0.0000 | 0.0000 | 0.0000 | | 16.0000 | 8.0000 | 0.0000 | 0.0000 | 0.0000 | | 0.0000 | 0.0000 | 56.0000 | 16.0000 | 32.0000 | | 0.0000 | 0.0000 | 0.0000 | 0.0000 | 0.0000 | | 0.0000 | 0.0000 | 0.0000 | 0.0000 | 0.0000 | MAtrix **B**: | 第1列 | 第2列 | 第3列 | 第4列 | 第5列 | 第6列 | | ------- | ------- | ------- | ------- | ------ | ------ | | 72.0000 | 0.0000 | 16.0000 | 0.0000 | 0.0000 | 0.0000 | | 0.0000 | 64.0000 | 8.0000 | 0.0000 | 0.0000 | 0.0000 | | 0.0000 | 0.0000 | 0.0000 | 56.0000 | 0.0000 | 0.0000 | | 0.0000 | 0.0000 | 0.0000 | 16.0000 | 0.0000 | 0.0000 | | 0.0000 | 0.0000 | 0.0000 | 32.0000 | 0.0000 | 0.0000 | To | 第1列 | 第2列 | 第3列 | 第4列 | 第5列 | 第6列 | | --------- | --------- | --------- | --------- | ------ | ------ | | 5184.0000 | 0.0000 | 1152.0000 | 0.0000 | 0.0000 | 0.0000 | | 0.0000 | 4096.0000 | 512.0000 | 0.0000 | 0.0000 | 0.0000 | | 1152.0000 | 512.0000 | 320.0000 | 0.0000 | 0.0000 | 0.0000 | | 0.0000 | 0.0000 | 0.0000 | 4416.0000 | 0.0000 | 0.0000 | | 0.0000 | 0.0000 | 0.0000 | 0.0000 | 0.0000 | 0.0000 | | 0.0000 | 0.0000 | 0.0000 | 0.0000 | 0.0000 | 0.0000 | ## Demo : mat.flatten double* flatten(Matrix mid1) | 1 | 2 | 3 | | :--: | :--: | :--: | | 2 | 4 | 6 | | 7 | 8 | 9 | ​ To | 1 | 2 | 3 | 2 | 4 | 6 | 7 | 8 | 9 | | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | :----------------- | | | | | | | | | | Like numpy.flatten | ## Demo : apply nearly mat ​ Matrix appply(Matrix mid1,Matrix mid2,int axis = 0) > if axis=0 : | 0 | 7 | 2 | | ---- | ---- | ---- | | 0 | 3 | 1 | | 0 | 0 | 0 | | 0 | 0 | 11 | | 0 | 7 | 2 | | 0 | 3 | 1 | | 0 | 0 | 0 | | 0 | 0 | 11 | ------ > axis = 1: | 0 | 7 | 2 | 0 | 7 | 2 | | ---- | ---- | ---- | ---- | ---- | ---- | | 0 | 3 | 1 | 0 | 3 | 1 | | 0 | 0 | 0 | 0 | 0 | 0 | | 0 | 0 | 11 | 0 | 0 | 11 | - [x] read_csv - [x] return a matrix CSV head : | -0.017612 | 14.053064 | 0 | | --------- | --------- | ---- | | -1.395634 | 4.662541 | 1 | | -0.752157 | 6.53862 | 0 | | -1.322371 | 7.152853 | 0 | | 0.423363 | 11.054677 | 0 | | 0.406704 | 7.067335 | 1 | Get: ![](./picture/WX20191119-105411@2x.png) ## Test demo: ```c #include #include #include #include #include #include #include"./matrix/matrix_def.h" #include"./matrix/matrix_pro.h" #include"./welcome/score_wel.cpp" #include"./logistic/logistic_def.h" #include"./file_pro/data_read.h" using namespace std; clock_t start, stop; double duration; int main() { welcome(); string path = "./new_data2.csv"; Matrix data = read_csv(path); Matrix bais = CreateMatrix(data.row,1); data = appply(data,bais,1); Matrix y = iloc(data,0,0,3,4); Matrix x_1 = iloc(data,0,0,0,3); Matrix x_2 = get_T(x_1); double alpha = 0.002; int max_epoch = 100; Matrix weight = CreateMatrix(3,1); change_va(weight,0,0,1); change_va(weight,1,0,1); change_va(weight,2,0,1); int epoch = 0; for(epoch = 0;epoch<=max_epoch;epoch++) { cout<<"-----------split-line-----------"< 1. Matrix'element is default 1 > 2. Dynamically allocate memory to prevent matrix from being too large > 3. To save memory and delete later, use pointer to open up array space temporarily > 4. if free please delete(matrix); > 5. Api design like numpy or pandas > 6. Talking is cheap u can get the code > 7. welcome 🏃watched and star. > ------
个人小站:[极度空间](likedge.top) 作者邮箱:zk@likedge.top | edge@ibooker.org.cn QQ:2533524298