I am posting this question here, because AutoGrad.jl is associated with Knet.

I have a derivative of the `svd`

.

`svd`

returns an object of type `SVD`

, with components `U`

, `Vt`

, and `S`

. I want to register the derivative with `AutoGrad`

such that a scalar function of any or all these subcomponents can be differentiated with for instance `@diff`

. Currently, I have not wrapped the derivatives in a composite type, but return a Tuple of tensors. I have successfully registered the derivative with

```
@primitive svd(x) dsvd(x)
```

but I can’t test it with `@diff`

because it doesn’t do non-scalar functions (that I have found). I must be missing something though, because the following does differentiate:

```
h(x) = (x,x.^2, x.^3)
hh(x) = ( a = h(x); sum(a[1]+a[3]))
X = Param([3.0])
y = @diff hh(X) # T(30.0)
grad(y,X) # 28.0
```

Clearly, `AutoGrad`

computed the jacobian of the Tuple.

Any hints on how I should declare the `dsvd`

so it can be used to differentiate functions of `svd`

?