Add nd-array support
This issue tracks the development of v0.1 of the nd array support for this project.
Currently we will support the following things:
- Creation of Nd shape array
- Arithmetic Operations with nd shape array
The aim of the API is to look somewhat like this:
auto val = new vector<int> ({1,2,3,4});
auto shape = new vector<int> ({2,2});
Matrix<int> m(val,shape)
cout<<m<<endl;
m = m + m;
m = m - m;
In the future we want to try to add broadcasting, but not in this release. We'll try to be as memory efficient as possible with as few allocation of memory and responsibly avoiding memory leaks by writing destructors.
Support for matrix is now live on develop via #11 . Refer to that to know more. What's left is backprop for dot product operation. This will include getting the transpose operation to work for matrices. Once we are done with this, we can move on to create higher level layers for a fully connected MLP. One item left is to get dot product working on the GPU and callable through c++ code.
Back Prop of matrix multiplication is handled via #21 . GPU support is still not pushed into main branch. So holding on that to close this issue
Handled via #23