softmax gradient
This commit is contained in:
parent
5eee653a64
commit
23c5a1b163
@ -36,6 +36,14 @@ function back!(::typeof(*), Δ, a::AbstractMatrix, b::AbstractVecOrMat)
|
|||||||
@back!(b, At_mul_B(data(a), Δ))
|
@back!(b, At_mul_B(data(a), Δ))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# NNlib
|
||||||
|
|
||||||
|
import NNlib: softmax, ∇softmax
|
||||||
|
|
||||||
|
softmax(xs::TrackedArray) = TrackedArray(Call(softmax, xs))
|
||||||
|
|
||||||
|
back!(::typeof(softmax), Δ, xs) = @back!(xs, ∇softmax(Δ, data(xs)))
|
||||||
|
|
||||||
# Broadcasting
|
# Broadcasting
|
||||||
|
|
||||||
using ForwardDiff: Dual, partials
|
using ForwardDiff: Dual, partials
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
using Flux.Tracker, Base.Test, NNlib
|
||||||
using Flux.Tracker: gradcheck
|
using Flux.Tracker: gradcheck
|
||||||
using Base.Test, NNlib
|
|
||||||
|
|
||||||
gradtest(f, xs::AbstractArray...) = gradcheck((xs...) -> sum(f(xs...)), xs...)
|
gradtest(f, xs::AbstractArray...) = gradcheck((xs...) -> sum(f(xs...)), xs...)
|
||||||
gradtest(f, dims...) = gradtest(f, rand.(dims)...)
|
gradtest(f, dims...) = gradtest(f, rand.(dims)...)
|
||||||
@ -11,4 +11,7 @@ gradtest(f, dims...) = gradtest(f, rand.(dims)...)
|
|||||||
|
|
||||||
@test gradtest(x -> sin.(sum(x, (2, 3))), (3,4,5))
|
@test gradtest(x -> sin.(sum(x, (2, 3))), (3,4,5))
|
||||||
|
|
||||||
|
gradtest(x -> softmax(x).*(1:3), 3)
|
||||||
|
gradtest(x -> softmax(x).*(1:3), (3,5))
|
||||||
|
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user