-
Notifications
You must be signed in to change notification settings - Fork 34
/
Copy pathflows.jl
29 lines (28 loc) · 1.18 KB
/
flows.jl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
@testset "PlanarLayer" begin
# logpdf of a flow with a planar layer and two-dimensional inputs
test_ad(randn(7)) do θ
layer = PlanarLayer(θ[1:2], θ[3:4], θ[5:5])
flow = transformed(MvNormal(zeros(2), I), layer)
x = θ[6:7]
return logpdf(flow.dist, x) - logabsdetjac(flow.transform, x)
end
test_ad(randn(11)) do θ
layer = PlanarLayer(θ[1:2], θ[3:4], θ[5:5])
flow = transformed(MvNormal(zeros(2), I), layer)
x = reshape(θ[6:end], 2, :)
return sum(logpdf(flow.dist, x) - logabsdetjac(flow.transform, x))
end
# logpdf of a flow with the inverse of a planar layer and two-dimensional inputs
test_ad(randn(7)) do θ
layer = PlanarLayer(θ[1:2], θ[3:4], θ[5:5])
flow = transformed(MvNormal(zeros(2), I), inverse(layer))
x = θ[6:7]
return logpdf(flow.dist, x) - logabsdetjac(flow.transform, x)
end
test_ad(randn(11)) do θ
layer = PlanarLayer(θ[1:2], θ[3:4], θ[5:5])
flow = transformed(MvNormal(zeros(2), I), inverse(layer))
x = reshape(θ[6:end], 2, :)
return sum(logpdf(flow.dist, x) - logabsdetjac(flow.transform, x))
end
end