sangyx's Blog

[Week 5] Check-in

sangyx
Published: 07/05/2020

 

1. What did you do this week?

  • Add more test cases to cover more functions.

2. Difficulty

No difficulties this week.

3. What is coming up next?

  • Use unumpy multimethods.
  • Improve documentation.
  • Publish a simple version of udiff on pypi.
View Blog Post

[Week 4] Check-in

sangyx
Published: 06/28/2020

1. What did you do this week?

This week's job is to implement jacobian and add test cases. 

2. Difficulty

No difficulties this week.

3. What is coming up next?

  • Add more test cases to cover more functions.
  • Improve documentation.
  • Publish a simple version of udiff on pypi.
View Blog Post

[Week 3] Check-in

sangyx
Published: 06/21/2020

1. What did you do this week?

This week's job is to add test cases and change the code as mentor's request. 

2. Difficulty

No difficulties this week.

3. What is coming up next?

The work for the next week is to merge vjp and start to work on jacobian.

View Blog Post

[Week 2] Check-in

sangyx
Published: 06/14/2020

1. What did you do this week?

This week's main job is to implement the backward propagation. After that, I complete the whole vjp. 

Because of the bad support for figure and code, more detail see: https://sangyx.com/1790

2. Difficulty

I complicated this problem at the beginning. Later I found that imitating pytorch's API to implement is more intuitive and simple. 

In addition, because I am not very familiar with uarray, some implementations are not elegent.

3. What is coming up next?

The work for the next week is to test vjp and work with my mentor to rewrite the code more elegent.

View Blog Post

[Week 1] Check-in

sangyx
Published: 06/11/2020

1. What did you do this week?

This week's main job is to build a calculation graph. The core of the automatic differential system is vjp, which is composed of calculation graph construction and gradient calculation.

2. Difficulty

The computational graph construction is not as simple as I thought. The main problem encountered in the process is that some basic differential operators not only need to pass in the tensors, but also need to pass in some parameters of the function, such as np.sum. This requires that some parameters required by the differential operator be passed in advance when constructing the calculation graph. In addition, according to the different calculation paths, the parents of each node in the calculation graph should be marked appropriately, and then they can be calculated along the correct path during back propagation.

3. What is coming up next?

The work for the next week is to implement simple back propagation and complete a complete differential operation.

View Blog Post