Flux.jl/src/layers/stateless.jl

35 lines
847 B
Julia
Raw Normal View History

2017-11-09 15:03:57 +00:00
using NNlib: log_fast
2017-08-19 19:52:29 +00:00
# Cost functions
2017-08-24 10:40:51 +00:00
mse(, y) = sum(( .- y).^2)/length(y)
2017-08-19 19:52:29 +00:00
function crossentropy(::AbstractVecOrMat, y::AbstractVecOrMat)
return -sum(y .* log_fast.()) / size(y, 2)
end
function weighted_crossentropy(::AbstractVecOrMat, y::AbstractVecOrMat, w::AbstractVecOrMat)
return -sum(y .* log_fast.() .* w) / size(y, 2)
end
2017-10-17 16:36:18 +00:00
@deprecate logloss(x, y) crossentropy(x, y)
2017-10-17 16:57:10 +00:00
2017-10-17 16:58:32 +00:00
function logitcrossentropy(logŷ::AbstractVecOrMat, y::AbstractVecOrMat)
logŷ = logŷ .- maximum(logŷ, 1)
2017-10-27 11:05:37 +00:00
ypred = logŷ .- log_fast.(sum(exp.(logŷ), 1))
2017-10-17 16:58:32 +00:00
-sum(y .* ypred) / size(y, 2)
2017-10-17 16:57:10 +00:00
end
2017-10-10 20:33:37 +00:00
"""
2017-10-23 11:53:07 +00:00
normalise(x::AbstractVecOrMat)
2017-10-10 20:33:37 +00:00
2017-10-23 11:53:07 +00:00
Normalise each column of `x` to mean 0 and standard deviation 1.
2017-10-10 20:33:37 +00:00
"""
2017-10-23 11:53:07 +00:00
function normalise(x::AbstractVecOrMat)
μ′ = mean(x, 1)
σ = std(x, 1, mean = μ′)
return (x .- μ′) ./ σ
2017-10-10 20:33:37 +00:00
end