Skip to content

Commit eb9a462

Browse files
authored
Merge branch 'master' into wct/fix-getindex
2 parents 6f1a8d9 + fcdaebd commit eb9a462

File tree

6 files changed

+139
-134
lines changed

6 files changed

+139
-134
lines changed

LICENSE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
The Tracker.jl package is licensed under the MIT "Expat" License:
22

3-
> Copyright (c) 2016: Mike Innes.
3+
> Copyright (c) 2016-19: Julia Computing, Inc., Mike J Innes, and Contributors
44
>
55
> Permission is hereby granted, free of charge, to any person obtaining
66
> a copy of this software and associated documentation files (the

Manifest.toml

Lines changed: 29 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,15 @@ version = "0.2.0"
2929

3030
[[Compat]]
3131
deps = ["Base64", "Dates", "DelimitedFiles", "Distributed", "InteractiveUtils", "LibGit2", "Libdl", "LinearAlgebra", "Markdown", "Mmap", "Pkg", "Printf", "REPL", "Random", "Serialization", "SharedArrays", "Sockets", "SparseArrays", "Statistics", "Test", "UUIDs", "Unicode"]
32-
git-tree-sha1 = "49269e311ffe11ac5b334681d212329002a9832a"
32+
git-tree-sha1 = "84aa74986c5b9b898b0d1acaf3258741ee64754f"
3333
uuid = "34da2185-b29b-5c13-b0c7-acf172513d20"
34-
version = "1.5.1"
34+
version = "2.1.0"
3535

36-
[[DataStructures]]
37-
deps = ["InteractiveUtils", "OrderedCollections", "Random", "Serialization", "Test"]
38-
git-tree-sha1 = "ca971f03e146cf144a9e2f2ce59674f5bf0e8038"
39-
uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8"
40-
version = "0.15.0"
36+
[[Crayons]]
37+
deps = ["Test"]
38+
git-tree-sha1 = "f621b8ef51fd2004c7cf157ea47f027fdeac5523"
39+
uuid = "a8cc5b0e-0ffa-5ad4-8c14-923d3ee1735f"
40+
version = "4.0.0"
4141

4242
[[Dates]]
4343
deps = ["Printf"]
@@ -49,28 +49,28 @@ uuid = "8bb1440f-4735-579b-a4ab-409b98df4dab"
4949

5050
[[DiffResults]]
5151
deps = ["Compat", "StaticArrays"]
52-
git-tree-sha1 = "db8acf46717b13d6c48deb7a12007c7f85a70cf7"
52+
git-tree-sha1 = "34a4a1e8be7bc99bc9c611b895b5baf37a80584c"
5353
uuid = "163ba53b-c6d8-5494-b064-1a9d43ac40c5"
54-
version = "0.0.3"
54+
version = "0.0.4"
5555

5656
[[DiffRules]]
5757
deps = ["Random", "Test"]
58-
git-tree-sha1 = "09d69da75967ec48a8b1ad0897ec9144ee052bf9"
58+
git-tree-sha1 = "dc0869fb2f5b23466b32ea799bd82c76480167f7"
5959
uuid = "b552c78f-8df3-52c6-915a-8e097449b14b"
60-
version = "0.0.8"
60+
version = "0.0.10"
6161

6262
[[Distributed]]
63-
deps = ["LinearAlgebra", "Random", "Serialization", "Sockets"]
63+
deps = ["Random", "Serialization", "Sockets"]
6464
uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b"
6565

6666
[[ForwardDiff]]
6767
deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "InteractiveUtils", "LinearAlgebra", "NaNMath", "Random", "SparseArrays", "SpecialFunctions", "StaticArrays", "Test"]
68-
git-tree-sha1 = "e393bd3b9102659fb24fe88caedec41f2bc2e7de"
68+
git-tree-sha1 = "4c4d727f1b7e0092134fabfab6396b8945c1ea5b"
6969
uuid = "f6369f11-7733-5829-9624-2563aa707210"
70-
version = "0.10.2"
70+
version = "0.10.3"
7171

7272
[[InteractiveUtils]]
73-
deps = ["LinearAlgebra", "Markdown"]
73+
deps = ["Markdown"]
7474
uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240"
7575

7676
[[LibGit2]]
@@ -88,43 +88,29 @@ uuid = "56ddb016-857b-54e1-b83d-db4d58db5568"
8888

8989
[[MacroTools]]
9090
deps = ["Compat"]
91-
git-tree-sha1 = "c443e1c8d58a4e9f61b708ad0a88286c7042145b"
91+
git-tree-sha1 = "3fd1a3022952128935b449c33552eb65895380c1"
9292
uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09"
93-
version = "0.4.4"
93+
version = "0.4.5"
9494

9595
[[Markdown]]
9696
deps = ["Base64"]
9797
uuid = "d6f4376e-aef5-505a-96c1-9c027394607a"
9898

99-
[[Missings]]
100-
deps = ["Dates", "InteractiveUtils", "SparseArrays", "Test"]
101-
git-tree-sha1 = "d1d2585677f2bd93a97cfeb8faa7a0de0f982042"
102-
uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28"
103-
version = "0.4.0"
104-
10599
[[Mmap]]
106100
uuid = "a63ad114-7e13-5084-954f-fe012c677804"
107101

108102
[[NNlib]]
109-
deps = ["Libdl", "LinearAlgebra", "MacroTools", "Requires", "Test"]
110-
git-tree-sha1 = "5a8ed87d61b1ccb71d99235c2a96287addebbb9f"
111-
repo-rev = "master"
112-
repo-url = "https://github.com/FluxML/NNlib.jl.git"
103+
deps = ["Libdl", "LinearAlgebra", "Requires", "Statistics", "TimerOutputs"]
104+
git-tree-sha1 = "0c667371391fc6bb31f7f12f96a56a17098b3de8"
113105
uuid = "872c559c-99b0-510c-b3b7-b6c96a88d5cd"
114-
version = "0.4.3+"
106+
version = "0.6.0"
115107

116108
[[NaNMath]]
117109
deps = ["Compat"]
118110
git-tree-sha1 = "ce3b85e484a5d4c71dd5316215069311135fa9f2"
119111
uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3"
120112
version = "0.3.2"
121113

122-
[[OrderedCollections]]
123-
deps = ["Random", "Serialization", "Test"]
124-
git-tree-sha1 = "85619a3f3e17bb4761fe1b1fd47f0e979f964d5b"
125-
uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d"
126-
version = "1.0.2"
127-
128114
[[Pkg]]
129115
deps = ["Dates", "LibGit2", "Markdown", "Printf", "REPL", "Random", "SHA", "UUIDs"]
130116
uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f"
@@ -160,12 +146,6 @@ uuid = "1a1011a3-84de-559e-8e89-a11a2f7dc383"
160146
[[Sockets]]
161147
uuid = "6462fe0b-24de-5631-8697-dd941f90decc"
162148

163-
[[SortingAlgorithms]]
164-
deps = ["DataStructures", "Random", "Test"]
165-
git-tree-sha1 = "03f5898c9959f8115e30bc7226ada7d0df554ddd"
166-
uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c"
167-
version = "0.3.1"
168-
169149
[[SparseArrays]]
170150
deps = ["LinearAlgebra", "Random"]
171151
uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf"
@@ -178,32 +158,32 @@ version = "0.7.2"
178158

179159
[[StaticArrays]]
180160
deps = ["InteractiveUtils", "LinearAlgebra", "Random", "Statistics", "Test"]
181-
git-tree-sha1 = "1eb114d6e23a817cd3e99abc3226190876d7c898"
161+
git-tree-sha1 = "3841b39ed5f047db1162627bf5f80a9cd3e39ae2"
182162
uuid = "90137ffa-7385-5640-81b9-e52037218182"
183-
version = "0.10.2"
163+
version = "0.10.3"
184164

185165
[[Statistics]]
186166
deps = ["LinearAlgebra", "SparseArrays"]
187167
uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"
188168

189-
[[StatsBase]]
190-
deps = ["DataStructures", "DelimitedFiles", "LinearAlgebra", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "Test"]
191-
git-tree-sha1 = "7b596062316c7d846b67bf625d5963a832528598"
192-
uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91"
193-
version = "0.27.0"
194-
195169
[[Test]]
196170
deps = ["Distributed", "InteractiveUtils", "Logging", "Random"]
197171
uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
198172

173+
[[TimerOutputs]]
174+
deps = ["Crayons", "Printf", "Test", "Unicode"]
175+
git-tree-sha1 = "b80671c06f8f8bae08c55d67b5ce292c5ae2660c"
176+
uuid = "a759f4b9-e2f1-59dc-863e-4aeb61b1ea8f"
177+
version = "0.5.0"
178+
199179
[[URIParser]]
200180
deps = ["Test", "Unicode"]
201181
git-tree-sha1 = "6ddf8244220dfda2f17539fa8c9de20d6c575b69"
202182
uuid = "30578b45-9adc-5946-b283-645ec420af67"
203183
version = "0.4.0"
204184

205185
[[UUIDs]]
206-
deps = ["Random"]
186+
deps = ["Random", "SHA"]
207187
uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4"
208188

209189
[[Unicode]]

Project.toml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
name = "Tracker"
22
uuid = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c"
3+
version = "0.2.1"
34

45
[deps]
56
Adapt = "79e6a3ab-5dfb-504d-930d-738a2a938a0e"
@@ -15,3 +16,7 @@ Requires = "ae029012-a4dd-5104-9daa-d747884805df"
1516
SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b"
1617
Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"
1718
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
19+
20+
[compat]
21+
julia = "0.7, 1"
22+
NNlib = ">= 0.6"

src/back.jl

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -171,18 +171,10 @@ gradient(f, xs...; nest = false) =
171171
172172
Calculate the output jacobian `J = d/dx m(x)` such that each row `i` of `J` corresponds to the gradient `J[i,:] = ∇ₓ(m(x)[i])`
173173
"""
174-
function jacobian(m,x)
175-
xp = param(x)
176-
y = m(xp)
177-
k = length(y)
178-
n = length(x)
179-
J = Matrix{eltype(x)}(undef,k,n)
180-
for i = 1:k
181-
back!(y[i], once = false) # Populate gradient accumulator
182-
J[i,:] = xp.grad
183-
xp.grad .= 0 # Reset gradient accumulator
184-
end
185-
J
174+
function jacobian(f, x::AbstractVector)
175+
y::AbstractVector, back = forward(f, x)
176+
(i) = [i == j for j = 1:length(y)]
177+
vcat([transpose(back((i))[1]) for i = 1:length(y)]...)
186178
end
187179

188180
hessian(f, x) = jacobian(x -> gradient(f, x, nest=true)[1], x)

0 commit comments

Comments
 (0)