src/DifferentiableFN.jl

Mon, 22 Mar 2021 22:26:08 -0500

author
Tuomo Valkonen <tuomov@iki.fi>
date
Mon, 22 Mar 2021 22:26:08 -0500
changeset 25
90f92ee9cb81
parent 21
3b7fcc651585
child 27
62c62f451a41
permissions
-rw-r--r--

Add basic Func to DifferentiableFN

21
3b7fcc651585 Add DifferentiableFN
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
1 module DifferentiableFN
3b7fcc651585 Add DifferentiableFN
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
2
3b7fcc651585 Add DifferentiableFN
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
3 using ..LinOps
3b7fcc651585 Add DifferentiableFN
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
4
25
90f92ee9cb81 Add basic Func to DifferentiableFN
Tuomo Valkonen <tuomov@iki.fi>
parents: 21
diff changeset
5 export Func,
90f92ee9cb81 Add basic Func to DifferentiableFN
Tuomo Valkonen <tuomov@iki.fi>
parents: 21
diff changeset
6 DiffF,
21
3b7fcc651585 Add DifferentiableFN
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
7 value,
3b7fcc651585 Add DifferentiableFN
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
8 differential,
3b7fcc651585 Add DifferentiableFN
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
9 adjoint_differential
3b7fcc651585 Add DifferentiableFN
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
10
25
90f92ee9cb81 Add basic Func to DifferentiableFN
Tuomo Valkonen <tuomov@iki.fi>
parents: 21
diff changeset
11 abstract type Func{X,Y} end
90f92ee9cb81 Add basic Func to DifferentiableFN
Tuomo Valkonen <tuomov@iki.fi>
parents: 21
diff changeset
12 abstract type DiffF{X,Y,T} <: Func{X, Y} end
21
3b7fcc651585 Add DifferentiableFN
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
13
25
90f92ee9cb81 Add basic Func to DifferentiableFN
Tuomo Valkonen <tuomov@iki.fi>
parents: 21
diff changeset
14 function value(f :: F, x :: X) :: Y where {X, Y, F <: Func{X,Y}}
21
3b7fcc651585 Add DifferentiableFN
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
15 @error "`value` unimplemented"
3b7fcc651585 Add DifferentiableFN
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
16 end
3b7fcc651585 Add DifferentiableFN
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
17
3b7fcc651585 Add DifferentiableFN
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
18 # function (f :: D)(x::X) where {X, Y, T <: LinOp{X, Y}, D <: DiffF{X, Y, T}}
3b7fcc651585 Add DifferentiableFN
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
19 # return value(x)
3b7fcc651585 Add DifferentiableFN
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
20 # end
3b7fcc651585 Add DifferentiableFN
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
21
3b7fcc651585 Add DifferentiableFN
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
22 function differential(f :: DiffF{X,Y,T}, x :: X) :: T where {X, Y, T <: LinOp{X, Y}}
3b7fcc651585 Add DifferentiableFN
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
23 @error "`differential` unimplemented"
3b7fcc651585 Add DifferentiableFN
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
24 end
3b7fcc651585 Add DifferentiableFN
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
25
3b7fcc651585 Add DifferentiableFN
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
26 function adjoint_differential(f :: DiffF{X,Y,T}, x :: X) :: T where {X, Y, T <: LinOp{X, Y}}
3b7fcc651585 Add DifferentiableFN
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
27 @error "`adjoint_differential` unimplemented"
3b7fcc651585 Add DifferentiableFN
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
28 end
3b7fcc651585 Add DifferentiableFN
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
29
3b7fcc651585 Add DifferentiableFN
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
30 function adjoint_differential(f :: DiffF{X,Y, T}, x :: X) :: T where {X, Y, T <: AdjointableOp{X, Y}}
3b7fcc651585 Add DifferentiableFN
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
31 return AdjointOp(differential(f, x))
3b7fcc651585 Add DifferentiableFN
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
32 end
3b7fcc651585 Add DifferentiableFN
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
33
3b7fcc651585 Add DifferentiableFN
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
34 end

mercurial