Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Initial graph #5

Merged
merged 20 commits into from
Apr 18, 2020
Merged

Initial graph #5

merged 20 commits into from
Apr 18, 2020

Conversation

vadixidav
Copy link
Member

This creates a graph that is not ideal (see issue #4 for more details), but does work for most machine learning use cases anyways. The approach in the PR initially is to represent all of the available ops that all backends can execute using an enum called Op. This approach is likely not what we ultimately intend to use since it doesn't support adding ops downstream, but this PR will be open to discuss this.

The deep crate contains the core graph logic and tensor logic. It also contains what defines a backend.

The deep-native crate defines the backend for native Rust implemented operations. It specifically chooses to use ndarray to represent its tensors. It allows ops to be plugged into it at runtime.

The deep-backend-tools crate was created because deep-native had several pieces of code that likely apply to all backends. This crate is intended to make the development of future backends easier by allowing the reuse of code. This crate performs the graph forward and backward propogation using a Tape struct that remembers previous outputs to avoid re-computation when gradients need to be applied.

@vadixidav vadixidav merged commit 33006d4 into master Apr 18, 2020
@vadixidav vadixidav deleted the initial_graph branch April 18, 2020 19:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant