@@ -4,17 +4,17 @@ using NNlib: conv, ∇conv_filter, ∇conv_data, ∇maxpool, maxpool, depthwisec
4
4
x = reshape (Float64[1 : 20 ;], 5 , 4 , 1 , 1 )
5
5
w = reshape (Float64[1 : 4 ;], 2 , 2 , 1 , 1 )
6
6
7
- @test squeeze (conv (x, w), dims = (3 ,4 )) == [
7
+ @test dropdims (conv (x, w), dims = (3 ,4 )) == [
8
8
29 79 129 ;
9
9
39 89 139 ;
10
10
49 99 149 ;
11
11
59 109 159. ]
12
12
13
- @test squeeze (conv (x, w; stride= 2 ), dims = (3 ,4 )) == [
13
+ @test dropdims (conv (x, w; stride= 2 ), dims = (3 ,4 )) == [
14
14
29 129 ;
15
15
49 149. ]
16
16
17
- @test squeeze (conv (x, w; pad= 1 ), dims = (3 ,4 )) == [
17
+ @test dropdims (conv (x, w; pad= 1 ), dims = (3 ,4 )) == [
18
18
1.0 9.0 29.0 49.0 48.0 ;
19
19
4.0 29.0 79.0 129.0 115.0 ;
20
20
7.0 39.0 89.0 139.0 122.0 ;
@@ -23,7 +23,7 @@ using NNlib: conv, ∇conv_filter, ∇conv_data, ∇maxpool, maxpool, depthwisec
23
23
10.0 40.0 70.0 100.0 80.0
24
24
]
25
25
26
- @test squeeze (conv (x, w; dilation= 2 ), dims = (3 ,4 )) == [
26
+ @test dropdims (conv (x, w; dilation= 2 ), dims = (3 ,4 )) == [
27
27
48 98 ;
28
28
58 108 ;
29
29
68 118. ]
89
89
W = copy (permutedims (w[:,:,:,i: i],[1 ,2 ,4 ,3 ]));
90
90
DY = copy (dy[:,:,2 i- 1 : 2 i,:]);
91
91
res = ∇conv_data (DY,X,W)
92
- @test squeeze (z[:,:,i: i,:], (3 ,4 )) == squeeze (res, (3 ,4 ))
92
+ @test dropdims (z[:,:,i: i,:], dims = (3 ,4 )) == dropdims (res, dims = (3 ,4 ))
93
93
end
94
94
95
95
z = ∇depthwiseconv_filter (dy, x, w)
98
98
W = copy (permutedims (w[:,:,:,i: i],[1 ,2 ,4 ,3 ]))
99
99
DY = copy (dy[:,:,2 i- 1 : 2 i,:])
100
100
res = ∇conv_filter (DY,X,W)
101
- @test squeeze (z[:,:,:,i: i], (4 )) == squeeze (res, (3 ))
101
+ @test dropdims (z[:,:,:,i: i]; dims = (4 )) == dropdims (res; dims = (3 ))
102
102
end
103
103
104
104
@test size (∇depthwiseconv_filter (rand (2 ,2 ,4 ,1 ), x, w)) == size (w)
@@ -107,17 +107,17 @@ end
107
107
# Test for the stride/pad for backward pass
108
108
y = depthwiseconv (x,w,stride= 2 ,pad= 1 )
109
109
@test size (y) == (2 ,2 ,4 ,1 )
110
- @test size (∇depthwiseconv_filter (rand (size (y)), x, w, stride= 2 , pad= 1 )) == size (w)
111
- @test size (∇depthwiseconv_data (rand (size (y)), x, w, stride= 2 , pad= 1 )) == size (x)
110
+ @test size (∇depthwiseconv_filter (rand (Float64, size (y)), x, w, stride= 2 , pad= 1 )) == size (w)
111
+ @test size (∇depthwiseconv_data (rand (Float64, size (y)), x, w, stride= 2 , pad= 1 )) == size (x)
112
112
end
113
113
114
114
@testset " maxpool2d" begin
115
115
116
116
x = reshape (Float64[1 : 20 ;], 5 , 4 , 1 , 1 )
117
117
118
- @test squeeze (maxpool (x, (2 ,2 )), dims = (3 ,4 )) == [7 17 ; 9 19 ]
119
- @test squeeze (maxpool (x, (2 ,2 ); stride= (2 ,2 )), dims = (3 ,4 )) == [7 17 ; 9 19 ]
120
- @test squeeze (maxpool (x, (2 ,2 ); pad= (1 ,1 )), dims = (3 ,4 )) == [
118
+ @test dropdims (maxpool (x, (2 ,2 )), dims = (3 ,4 )) == [7 17 ; 9 19 ]
119
+ @test dropdims (maxpool (x, (2 ,2 ); stride= (2 ,2 )), dims = (3 ,4 )) == [7 17 ; 9 19 ]
120
+ @test dropdims (maxpool (x, (2 ,2 ); pad= (1 ,1 )), dims = (3 ,4 )) == [
121
121
1.0 11.0 16.0 ;
122
122
3.0 13.0 18.0 ;
123
123
5.0 15.0 20.0 ;
149
149
1078.0 1258.0 1438.0 ;
150
150
1114.0 1294.0 1474.0 ;
151
151
1150.0 1330.0 1510.0 ]
152
- @test squeeze (conv (x, w), dims = (4 ,5 )) == res
152
+ @test dropdims (conv (x, w), dims = (4 ,5 )) == res
153
153
154
- @test squeeze (conv (x, w; stride= 2 ), dims = (3 ,4 ,5 )) == [
154
+ @test dropdims (conv (x, w; stride= 2 ), dims = (3 ,4 ,5 )) == [
155
155
322.0 682.0 ;
156
156
394.0 754.0 ]
157
157
184
184
478.0 1185.0 1315.0 1445.0 877.0 ;
185
185
489.0 1211.0 1341.0 1471.0 892.0 ;
186
186
270.0 660.0 730.0 800.0 480.0 ]
187
- @test squeeze (conv (x, w; pad= 1 ), dims = (4 ,5 )) == res
187
+ @test dropdims (conv (x, w; pad= 1 ), dims = (4 ,5 )) == res
188
188
189
- @test squeeze (conv (x, w; dilation= 2 ), dims = (3 ,4 ,5 )) == [
189
+ @test dropdims (conv (x, w; dilation= 2 ), dims = (3 ,4 ,5 )) == [
190
190
608 788 ;
191
191
644 824 ;
192
192
680 860.
230
230
231
231
x = reshape (Float64[1 : 60 ;], 5 , 4 , 3 , 1 , 1 )
232
232
233
- @test squeeze (maxpool (x, (2 ,2 ,2 )), dims = (3 ,4 ,5 )) == [27 37 ; 29 39. ]
234
- @test squeeze (maxpool (x, (2 ,2 ,2 ); stride= (2 ,2 ,2 )), dims = (3 ,4 ,5 )) == [27 37 ; 29 39. ]
233
+ @test dropdims (maxpool (x, (2 ,2 ,2 )), dims = (3 ,4 ,5 )) == [27 37 ; 29 39. ]
234
+ @test dropdims (maxpool (x, (2 ,2 ,2 ); stride= (2 ,2 ,2 )), dims = (3 ,4 ,5 )) == [27 37 ; 29 39. ]
235
235
res = zeros (3 ,3 ,2 )
236
236
res[:, :, 1 ] = [
237
237
1.0 11.0 16.0 ;
241
241
41.0 51.0 56.0 ;
242
242
43.0 53.0 58.0 ;
243
243
45.0 55.0 60.0 ]
244
- @test squeeze (maxpool (x, (2 ,2 ,2 ), pad= (1 ,1 ,1 )), dims = (4 ,5 )) == res
244
+ @test dropdims (maxpool (x, (2 ,2 ,2 ), pad= (1 ,1 ,1 )), dims = (4 ,5 )) == res
245
245
246
246
# for gradients, check only size
247
247
# correctness of gradients is cross-checked with CUDNN.jl
0 commit comments