@@ -114,6 +114,15 @@ pixelshuffle = [PixelShuffle]
114
114
gpu_gradtest (" PixelShuffle 2d" , pixelshuffle, rand (Float32, 3 , 4 , 18 , 3 ), 3 )
115
115
gpu_gradtest (" PixelShuffle 1d" , pixelshuffle, rand (Float32, 3 , 18 , 3 ), 3 )
116
116
117
+ embedding = [Embedding]
118
+ gpu_gradtest (" Embedding" , embedding, [1 ,3 ,5 ], 5 , 2 )
119
+ gpu_gradtest (" Embedding repeated indices" , embedding, [1 ,3 ,5 ,3 ], 5 , 2 )
120
+ gpu_gradtest (" Embedding integer index" , embedding, 1 , 5 , 2 )
121
+ gpu_gradtest (" Embedding 2d index" , embedding, [1 2 ; 3 4 ], 5 , 2 )
122
+ gpu_gradtest (" Embedding OneHotVec index" , embedding, OneHotVector (1 , 5 ), 5 , 2 )
123
+ gpu_gradtest (" Embedding OneHotMatrix index" , embedding, OneHotMatrix ([1 ,2 ,3 ], 5 ), 5 , 2 )
124
+ gpu_gradtest (" Embedding OneHotMatrix repeated indices" , OneHotMatrix ([1 ,2 ,2 ], 5 ), 5 , 2 )
125
+
117
126
@testset " function layers" begin
118
127
x = rand (Float32, 3 ,3 )
119
128
gpu_autodiff_test (x -> sum (Flux. normalise (x; dims= 1 )), x)
259
268
end
260
269
end
261
270
end
262
-
263
- @testset " Embedding" begin
264
- vocab_size, embed_size = 5 , 2
265
- m = Flux. Embedding (vocab_size, embed_size)
266
-
267
- x = [1 , 3 , 5 ]
268
- y = m (x)
269
- m_g = m |> gpu
270
- x_g = x |> gpu
271
- y_g = m_g (x_g)
272
- @test collect (y_g) == y
273
-
274
- gs = gradient (() -> sum (m (x)), params (m))
275
- gs_g = gradient (() -> sum (m_g (x_g)), params (m_g))
276
- @test collect (gs_g[m_g. weight]) ≈ gs[m. weight]
277
-
278
- gs = gradient (() -> sum (tanh .(m (x))), params (m))
279
- gs_g = gradient (() -> sum (tanh .(m_g (x_g))), params (m_g))
280
- @test collect (gs_g[m_g. weight]) ≈ gs[m. weight]
281
-
282
- @testset " repeated indices" begin
283
- vocab_size, embed_size = 5 , 2
284
- m = Flux. Embedding (vocab_size, embed_size)
285
-
286
- x = [1 , 3 , 5 , 3 ] # repeated indexes
287
- y = m (x)
288
- m_g = m |> gpu
289
- x_g = x |> gpu
290
- y_g = m_g (x_g)
291
- @test Array (y_g) == y
292
- gs = gradient (() -> sum (m (x)), params (m))
293
- gs_g = gradient (() -> sum (m_g (x_g)), params (m_g))
294
- @test Array (gs_g[m_g. weight]) ≈ gs[m. weight]
295
- end
296
- end
0 commit comments