Contributions/Problems

Thank you for your interest in this project! As the sole maintainer, I am currently not accepting pull requests or code contributions, but I will reviewing:

  • bugs, or serious flaw reports,

  • feature requests,

  • documentation suggestions,

  • and any other suggestions.

If you have feature requests

Please note that pygrad is a lightweight library with few dependencies. It should also be simple and easy to use. I want to keep it this way. I am not looking to replace PyTorch or Tensorflow.

How to Submit an Issue:
  • Create issue: https://github.com/baubels/pygrad/issues.

  • Include as much detail as possible.

  • Check existing issues to ensure you don’t submit a duplicate.

  • For bug reports: include steps to reproduce, expected behaviour, and actual behaviour.

  • For feature requests: describe the feature in detail and how it would benefit the project.

  • For suggestions: describe the suggestion, and why it might be relevant.

Gradient computations are wrong and related issues:

Some libraries will compute different gradients from one another for the same object.

For example, if you had a single Tensor A that produces two Tensors B and C, gradient contributions during backpropagation from B and C should be added. However, Pytorch has the convention of averaging gradient contributions.

For purposes of being able to test the correctness of pygrad more easily and offer better cross-compatibility with Pytorch, it was determined that pygrad would obey the conventions Pytorch has when doing backpropagation.

If you are receiving unexpected gradients, please check if you are getting the same issue with Pytorch first before submitting an issue.

It’s also been difficult to figure out how Conv2D in Pytorch is implemented when determining gradients specifically when calling .backward() more than once. For this reason, pygrad will output different gradients than might be expected here.

What Happens After You Submit an Issue:

I will review and implement if accepted. If there are discussions, implementation decisions will wait until discussions are resolved.