module NeuralNetworks struct Linear W::Matrix{Float64} b::Vector{Float64} end function (l::Linear)(x::Vector{Float64}) end struct Activation end struct MLP end struct AffineCoupling end function (f::AffineCoupling)(x::Vector{Float64})::Float64 return 0. end struct RealNVP layers::Vector{AffineCoupling} function RealNVP() layers = Vector{AffineCoupling}() new(layers) end end function (f::RealNVP)(x::Vector{Float64})::Float64 ldJ::Float64 = 0. for l! in f.layers ldJ += l!(x) end return ldJ end end