1
- function ChainRulesCore. rrule (:: typeof (getproperty), x:: ComponentArray , s:: Union{Symbol, Val} )
1
+ function ChainRulesCore. rrule (:: typeof (getproperty), x:: ComponentArray , s:: Union{Symbol,Val} )
2
2
function getproperty_adjoint (Δ)
3
3
zero_x = zero (similar (x, eltype (Δ)))
4
4
setproperty! (zero_x, s, Δ)
@@ -8,6 +8,12 @@ function ChainRulesCore.rrule(::typeof(getproperty), x::ComponentArray, s::Union
8
8
return getproperty (x, s), getproperty_adjoint
9
9
end
10
10
11
- ChainRulesCore. rrule (:: typeof (getdata), x:: ComponentArray ) = getdata (x), Δ-> (ChainRulesCore. NoTangent (), ComponentArray (Δ, getaxes (x)))
11
+ ChainRulesCore. rrule (:: typeof (getdata), x:: ComponentArray ) = getdata (x), Δ -> (ChainRulesCore. NoTangent (), ComponentArray (Δ, getaxes (x)))
12
12
13
- ChainRulesCore. rrule (:: Type{ComponentArray} , data, axes) = ComponentArray (data, axes), Δ-> (ChainRulesCore. NoTangent (), getdata (Δ), ChainRulesCore. NoTangent ())
13
+ ChainRulesCore. rrule (:: Type{ComponentArray} , data, axes) = ComponentArray (data, axes), Δ -> (ChainRulesCore. NoTangent (), getdata (Δ), ChainRulesCore. NoTangent ())
14
+
15
+ function ChainRulesCore. ProjectTo (ca:: ComponentArray )
16
+ return ChainRulesCore. ProjectTo {ComponentArray} (; project= ChainRulesCore. ProjectTo (getdata (ca)), axes= getaxes (ca))
17
+ end
18
+
19
+ (p:: ChainRulesCore.ProjectTo{ComponentArray} )(dx:: AbstractArray ) = ComponentArray (p. project (dx), p. axes)
0 commit comments