|
12 | 12 | test_rrule(sum, rand(5)'; fkwargs=(;dims=dims))
|
13 | 13 | y, back = rrule(sum, UpperTriangular(rand(5,5)); dims=dims)
|
14 | 14 | unthunk(back(y*(1+im))[2]) isa UpperTriangular{Float64}
|
| 15 | + @test_skip test_rrule(sum, UpperTriangular(rand(5,5)) ⊢ randn(5,5); fkwargs=(;dims=dims), check_inferred=false) # Problem: in add!! Evaluated: isapprox |
15 | 16 |
|
| 17 | + # Boolean -- via @non_differentiable |
| 18 | + test_rrule(sum, randn(5) .> 0; fkwargs=(;dims=dims)) |
| 19 | + |
16 | 20 | # Function allowing for 2nd derivatives
|
17 | 21 | for x in (rand(5), rand(2,3,4))
|
18 | 22 | dy = maximum(x; dims=dims)
|
|
39 | 43 | test_rrule(sum, abs2, x; fkwargs=(;dims=dims))
|
40 | 44 | end
|
41 | 45 | end
|
| 46 | + |
| 47 | + # Boolean -- via @non_differentiable, test that this isn't ambiguous |
| 48 | + test_rrule(sum, abs2, randn(5) .> 0; fkwargs=(;dims=dims)) |
42 | 49 | end # sum abs2
|
43 | 50 |
|
44 | 51 | @testset "sum(f, xs)" begin
|
|
69 | 76 | # make sure we preserve type for Diagonal
|
70 | 77 | _, pb = rrule(ADviaRuleConfig(), sum, abs, Diagonal([1.0, -3.0]))
|
71 | 78 | @test pb(1.0)[3] isa Diagonal
|
| 79 | + |
| 80 | + # Boolean -- via @non_differentiable, test that this isn't ambiguous |
| 81 | + @test_skip test_rrule(sum, sqrt, randn(5) .> 0; fkwargs=(;dims=dims)) # MethodError: no method matching real(::NoTangent) |
72 | 82 | end
|
73 | 83 |
|
74 | 84 | @testset "prod" begin
|
|
120 | 130 | @test unthunk(rrule(prod, UpperTriangular(ones(T,2,2)))[2](1.0)[2]) == UpperTriangular([0.0 0; 1 0])
|
121 | 131 |
|
122 | 132 | # Symmetric -- at least this doesn't have zeros, still an unlikely combination
|
123 |
| - |
124 | 133 | xs = Symmetric(rand(T,4,4))
|
125 | 134 | @test unthunk(rrule(prod, Symmetric(T[1 2; -333 4]))[2](1.0)[2]) == [16 8; 8 4]
|
126 | 135 | # TODO debug why these fail https://github.com/JuliaDiff/ChainRules.jl/issues/475
|
|
0 commit comments