-
-
Notifications
You must be signed in to change notification settings - Fork 14
/
Copy pathdense.jl
174 lines (150 loc) · 5.17 KB
/
dense.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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
@testset "AutoChainRules" begin
ad = AutoChainRules(; ruleconfig = ForwardOrReverseRuleConfig())
@test ad isa AbstractADType
@test ad isa AutoChainRules{ForwardOrReverseRuleConfig}
@test mode(ad) isa ForwardOrReverseMode
@test ad.ruleconfig == ForwardOrReverseRuleConfig()
ad = AutoChainRules(; ruleconfig = ForwardRuleConfig())
@test ad isa AbstractADType
@test ad isa AutoChainRules{ForwardRuleConfig}
@test mode(ad) isa ForwardMode
@test ad.ruleconfig == ForwardRuleConfig()
ad = AutoChainRules(; ruleconfig = ReverseRuleConfig())
@test ad isa AbstractADType
@test ad isa AutoChainRules{ReverseRuleConfig}
@test mode(ad) isa ReverseMode
@test ad.ruleconfig == ReverseRuleConfig()
end
@testset "AutoDiffractor" begin
ad = AutoDiffractor()
@test ad isa AbstractADType
@test ad isa AutoDiffractor
@test mode(ad) isa ForwardOrReverseMode
end
@testset "AutoEnzyme" begin
ad = AutoEnzyme()
@test ad isa AbstractADType
@test ad isa AutoEnzyme{Nothing, false}
@test mode(ad) isa ForwardOrReverseMode
@test ad.mode === nothing
ad = AutoEnzyme(EnzymeCore.Forward; constant_function = true)
@test ad isa AbstractADType
@test ad isa AutoEnzyme{typeof(EnzymeCore.Forward), true}
@test mode(ad) isa ForwardMode
@test ad.mode == EnzymeCore.Forward
ad = AutoEnzyme(; mode = EnzymeCore.Forward)
@test ad isa AbstractADType
@test ad isa AutoEnzyme{typeof(EnzymeCore.Forward), false}
@test mode(ad) isa ForwardMode
@test ad.mode == EnzymeCore.Forward
ad = AutoEnzyme(; mode = EnzymeCore.Reverse, constant_function = true)
@test ad isa AbstractADType
@test ad isa AutoEnzyme{typeof(EnzymeCore.Reverse), true}
@test mode(ad) isa ReverseMode
@test ad.mode == EnzymeCore.Reverse
end
@testset "AutoFastDifferentiation" begin
ad = AutoFastDifferentiation()
@test ad isa AbstractADType
@test ad isa AutoFastDifferentiation
@test mode(ad) isa SymbolicMode
end
@testset "AutoFiniteDiff" begin
ad = AutoFiniteDiff()
@test ad isa AbstractADType
@test ad isa AutoFiniteDiff
@test mode(ad) isa ForwardMode
@test ad.fdtype === Val(:forward)
@test ad.fdjtype === Val(:forward)
@test ad.fdhtype === Val(:hcentral)
ad = AutoFiniteDiff(; fdtype = Val(:central), fdjtype = Val(:forward))
@test ad isa AbstractADType
@test ad isa AutoFiniteDiff
@test mode(ad) isa ForwardMode
@test ad.fdtype === Val(:central)
@test ad.fdjtype === Val(:forward)
@test ad.fdhtype === Val(:hcentral)
end
@testset "AutoFiniteDifferences" begin
ad = AutoFiniteDifferences(; fdm = nothing)
@test ad isa AbstractADType
@test ad isa AutoFiniteDifferences{Nothing}
@test mode(ad) isa ForwardMode
@test ad.fdm === nothing
ad = AutoFiniteDifferences(; fdm = Val(:forward_fdm))
@test ad isa AbstractADType
@test ad isa AutoFiniteDifferences{Val{:forward_fdm}}
@test mode(ad) isa ForwardMode
@test ad.fdm == Val(:forward_fdm)
end
@testset "AutoForwardDiff" begin
ad = AutoForwardDiff()
@test ad isa AbstractADType
@test ad isa AutoForwardDiff{nothing, Nothing}
@test mode(ad) isa ForwardMode
@test ad.tag === nothing
ad = AutoForwardDiff(; chunksize = 10, tag = CustomTag())
@test ad isa AbstractADType
@test ad isa AutoForwardDiff{10, CustomTag}
@test mode(ad) isa ForwardMode
@test ad.tag == CustomTag()
end
@testset "AutoPolyesterForwardDiff" begin
ad = AutoPolyesterForwardDiff()
@test ad isa AbstractADType
@test ad isa AutoPolyesterForwardDiff{nothing, Nothing}
@test mode(ad) isa ForwardMode
@test ad.tag === nothing
ad = AutoPolyesterForwardDiff(; chunksize = 10, tag = CustomTag())
@test ad isa AbstractADType
@test ad isa AutoPolyesterForwardDiff{10, CustomTag}
@test mode(ad) isa ForwardMode
@test ad.tag == CustomTag()
end
@testset "AutoReverseDiff" begin
ad = @inferred AutoReverseDiff()
@test ad isa AbstractADType
@test ad isa AutoReverseDiff{false}
@test mode(ad) isa ReverseMode
@test !ad.compile
@test_deprecated ad.compile
ad = AutoReverseDiff(; compile = true)
@test ad isa AbstractADType
@test ad isa AutoReverseDiff{true}
@test mode(ad) isa ReverseMode
@test ad.compile
@test_deprecated ad.compile
ad = @inferred AutoReverseDiff(; compile = Val(true))
@test ad isa AbstractADType
@test ad isa AutoReverseDiff{true}
@test mode(ad) isa ReverseMode
@test ad.compile
@test_deprecated ad.compile
end
@testset "AutoSymbolics" begin
ad = AutoSymbolics()
@test ad isa AbstractADType
@test ad isa AutoSymbolics
@test mode(ad) isa SymbolicMode
end
@testset "AutoTapir" begin
ad = AutoTapir()
@test ad isa AbstractADType
@test ad isa AutoTapir
@test mode(ad) isa ReverseMode
@test ad.safe_mode
ad = AutoTapir(; safe_mode = false)
@test !ad.safe_mode
end
@testset "AutoTracker" begin
ad = AutoTracker()
@test ad isa AbstractADType
@test ad isa AutoTracker
@test mode(ad) isa ReverseMode
end
@testset "AutoZygote" begin
ad = AutoZygote()
@test ad isa AbstractADType
@test ad isa AutoZygote
@test mode(ad) isa ReverseMode
end