-
Notifications
You must be signed in to change notification settings - Fork 25
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
ChainRules types in FiniteDifferences to replace to_vec #97
Comments
Its weird to me when finitedifferences returns a non-valid differential like:
|
Sorry, could you expand? In what way is the differential invalid? Because derivatives aren't defined on the integers? |
Because differentials need to support addition. (sorry bad example, I normally ty and avoid examples with integers) |
Oh I see. Yeah, it's a bit frustrating. I think we're going to need some bespoke functionality to convert a primal into a valid tangent vector for this kind of thing. |
I am surprised we even get a tuple in the first place. |
As suggested in #90 (comment) , we might want to consider moving away from
to_vec
towards defining operations onChainRules
's types directly.In particular #91 implements the
difference
operation, which is the only operation that we're missing to let us approximately compute tangents. Still TODO isisapprox
for free if we also define subtraction, which is really easy because we've already defined addition and scalar multiplication. I think we can do this because I think we can always derive an appropriate norm for a differential, that is, I think we can treat any given differential as being an element of an appropriate normed vector space. (Note that we've not defined inner products between differentials, and I don't think we need to. Doing so would be one way to go about defining a norm, but it probably makes sense to go straight to a norm if we can't think of a reason why would need to define inner products. I'm open to suggestions here.) This is something we'll need to sort out inChainRulesCore
, as per Approximate Equality of Differentials ChainRulesCore.jl#184.Implementing this will immediately resolve:
FiniteDifferences.to_vec
for Composite ChainRulesTestUtils.jl#24 as it is covered bydifference
alreadybut will generally significantly improve the compatibility between
ChainRules
s andFiniteDifferences
, and should make one's experience testing differentials a much more pleasant experience.The text was updated successfully, but these errors were encountered: