@@ -351,37 +351,6 @@ _backvar(xs, Δ, N::Int, mean) = (convert(eltype(xs), 2/N) .* Δ .* (xs .- mean)
351351 return s, Δ -> _backvar (xs, Δ ./ (2 .* s), corrected, mean, dims)
352352end
353353
354- @adjoint function cumsum (xs:: AbstractVector ; dims:: Integer = 1 )
355- dims == 1 || return copy (xs), Δ -> (Δ,)
356- cumsum (xs), Δ -> (reverse (cumsum (reverse (Δ))),)
357- end
358- @adjoint function cumsum (xs:: AbstractArray ; dims:: Integer )
359- dims <= ndims (xs) || return copy (xs), Δ -> (Δ,)
360- cumsum (xs; dims= dims), Δ -> begin
361- (reverse (cumsum (reverse (Δ, dims= dims), dims= dims), dims= dims),)
362- end
363- end
364-
365- @adjoint eachrow (x:: AbstractVecOrMat ) = collect (eachrow (x)), dys -> ∇eachslice (dys, x, 1 )
366- @adjoint eachcol (x:: AbstractVecOrMat ) = collect (eachcol (x)), dys -> ∇eachslice (dys, x, 2 )
367- @adjoint eachslice (x:: AbstractArray ; dims:: Integer ) =
368- collect (eachslice (x; dims= dims)), dys -> ∇eachslice (dys, x, dims)
369-
370- function ∇eachslice (dys, x:: AbstractArray , dim:: Integer ) where {TX}
371- i1 = findfirst (dy -> dy isa AbstractArray, dys)
372- i1 === nothing && return (zero (x),) # all slices get nothing
373- T = promote_type (eltype (dys[i1]), eltype (x))
374- dx = similar (x, T)
375- for i in axes (x, dim)
376- if dys[i] isa AbstractArray
377- copyto! (selectdim (dx,dim,i), dys[i])
378- else
379- selectdim (dx,dim,i) .= 0
380- end
381- end
382- (dx,)
383- end
384-
385354
386355# LinearAlgebra
387356# =============
0 commit comments