It's better work on matrix expressions
I also don't think that x, y should be numeric matrices if they are random 
matrices. 

Now, the problem is the matrix derivative is computed wrong when it's 
derived with it's own elements
But when I tried with https://github.com/sympy/sympy/pull/17232 and 
symbolized all the stuff

import numpy as np
from sympy import *

n, d, n2, d2 = 5, 7, 4, 3

x = MatrixSymbol('x', n, d)
y = MatrixSymbol('y', n, d2)

w1 = MatrixSymbol("l", 7, 4)
w2 = MatrixSymbol("p", 4, 3)

h2 = x * w1
predicted = h2 * w2
HadamardPower(predicted - y, 2).diff(x[0, 0])
I see it gives consistent result with computations with explicit matrix. 
Although I can't easily read the formula.


On Sunday, May 31, 2020 at 8:12:11 PM UTC+9, Oscar wrote:
>
> On Sun, 31 May 2020 at 03:42, Giuseppe G. A. Celano 
> <[email protected] <javascript:>> wrote: 
> > 
> > I am trying to use very small matrices. Is there any way to calculate 
> the partial derivatives of "loss2" below? 
> > 
> > import numpy as np 
> > from sympy import * 
> > 
> > n, d, n2, d2 = 5, 7, 4, 3 
> > 
> > x = np.random.randn(n, d) 
> > y = np.random.randn(n, d2) 
> > 
> > w1 = MatrixSymbol("l", 7, 4) 
> > w1 = Matrix(w1) 
> > 
> > w2 = MatrixSymbol("p", 4, 3) 
> > w2 = Matrix(w2) 
> > 
> > h2 = x * w1 
> > predicted = h2 * w2 
> > 
> > loss2 = Matrix(np.square(predicted - y)) 
>
> What do you want to differentiate with respect to? 
>
> You can use loss2.diff(w1[0, 0]) to differentiate with respect to the 
> upper left entry of w1. 
>
> -- 
> Oscar 
>

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sympy/274fe467-6ac0-494f-bfad-b58ab10e5f6d%40googlegroups.com.

Reply via email to