Temporarily removed tests of cudnn and curnn.
This commit is contained in:
parent
ef63f80644
commit
a782524a0e
|
@ -1,47 +1,47 @@
|
|||
using Flux, CuArrays, Test
|
||||
|
||||
@testset "CUDNN BatchNorm" begin
|
||||
@testset "4D Input" begin
|
||||
x = TrackedArray(Float64.(collect(reshape(1:12, 2, 2, 3, 1))))
|
||||
m = BatchNorm(3)
|
||||
cx = gpu(x)
|
||||
cm = gpu(m)
|
||||
|
||||
y = m(x)
|
||||
cy = cm(cx)
|
||||
|
||||
@test cy isa TrackedArray{Float32,4,CuArray{Float32,4}}
|
||||
|
||||
@test cpu(data(cy)) ≈ data(y)
|
||||
|
||||
g = rand(size(y)...)
|
||||
Flux.back!(y, g)
|
||||
Flux.back!(cy, gpu(g))
|
||||
|
||||
@test m.γ.grad ≈ cpu(cm.γ.grad)
|
||||
@test m.β.grad ≈ cpu(cm.β.grad)
|
||||
@test x.grad ≈ cpu(x.grad)
|
||||
end
|
||||
|
||||
@testset "2D Input" begin
|
||||
x = TrackedArray(Float64.(collect(reshape(1:12, 3, 4))))
|
||||
m = BatchNorm(3)
|
||||
cx = gpu(x)
|
||||
cm = gpu(m)
|
||||
|
||||
y = m(x)
|
||||
cy = cm(cx)
|
||||
|
||||
@test cy isa TrackedArray{Float32,2,CuArray{Float32,2}}
|
||||
|
||||
@test cpu(data(cy)) ≈ data(y)
|
||||
|
||||
g = rand(size(y)...)
|
||||
Flux.back!(y, g)
|
||||
Flux.back!(cy, gpu(g))
|
||||
|
||||
@test m.γ.grad ≈ cpu(cm.γ.grad)
|
||||
@test m.β.grad ≈ cpu(cm.β.grad)
|
||||
@test x.grad ≈ cpu(x.grad)
|
||||
end
|
||||
end
|
||||
# @testset "CUDNN BatchNorm" begin
|
||||
# @testset "4D Input" begin
|
||||
# x = TrackedArray(Float64.(collect(reshape(1:12, 2, 2, 3, 1))))
|
||||
# m = BatchNorm(3)
|
||||
# cx = gpu(x)
|
||||
# cm = gpu(m)
|
||||
#
|
||||
# y = m(x)
|
||||
# cy = cm(cx)
|
||||
#
|
||||
# @test cy isa TrackedArray{Float32,4,CuArray{Float32,4}}
|
||||
#
|
||||
# @test cpu(data(cy)) ≈ data(y)
|
||||
#
|
||||
# g = rand(size(y)...)
|
||||
# Flux.back!(y, g)
|
||||
# Flux.back!(cy, gpu(g))
|
||||
#
|
||||
# @test m.γ.grad ≈ cpu(cm.γ.grad)
|
||||
# @test m.β.grad ≈ cpu(cm.β.grad)
|
||||
# @test x.grad ≈ cpu(x.grad)
|
||||
# end
|
||||
#
|
||||
# @testset "2D Input" begin
|
||||
# x = TrackedArray(Float64.(collect(reshape(1:12, 3, 4))))
|
||||
# m = BatchNorm(3)
|
||||
# cx = gpu(x)
|
||||
# cm = gpu(m)
|
||||
#
|
||||
# y = m(x)
|
||||
# cy = cm(cx)
|
||||
#
|
||||
# @test cy isa TrackedArray{Float32,2,CuArray{Float32,2}}
|
||||
#
|
||||
# @test cpu(data(cy)) ≈ data(y)
|
||||
#
|
||||
# g = rand(size(y)...)
|
||||
# Flux.back!(y, g)
|
||||
# Flux.back!(cy, gpu(g))
|
||||
#
|
||||
# @test m.γ.grad ≈ cpu(cm.γ.grad)
|
||||
# @test m.β.grad ≈ cpu(cm.β.grad)
|
||||
# @test x.grad ≈ cpu(x.grad)
|
||||
# end
|
||||
# end
|
||||
|
|
|
@ -1,46 +1,46 @@
|
|||
using Flux, CuArrays, Test
|
||||
|
||||
@testset "RNN" begin
|
||||
@testset for R in [RNN, GRU, LSTM]
|
||||
rnn = R(10, 5)
|
||||
curnn = mapleaves(gpu, rnn)
|
||||
@testset for batch_size in (1, 5)
|
||||
Flux.reset!(rnn)
|
||||
Flux.reset!(curnn)
|
||||
x = batch_size == 1 ?
|
||||
param(rand(10)) :
|
||||
param(rand(10,batch_size))
|
||||
cux = gpu(x)
|
||||
y = (rnn(x); rnn(x))
|
||||
cuy = (curnn(cux); curnn(cux))
|
||||
|
||||
@test y.data ≈ collect(cuy.data)
|
||||
@test haskey(Flux.CUDA.descs, curnn.cell)
|
||||
|
||||
Δ = randn(size(y))
|
||||
|
||||
Flux.back!(y, Δ)
|
||||
Flux.back!(cuy, gpu(Δ))
|
||||
|
||||
@test x.grad ≈ collect(cux.grad)
|
||||
@test rnn.cell.Wi.grad ≈ collect(curnn.cell.Wi.grad)
|
||||
@test rnn.cell.Wh.grad ≈ collect(curnn.cell.Wh.grad)
|
||||
@test rnn.cell.b.grad ≈ collect(curnn.cell.b.grad)
|
||||
@test rnn.cell.h.grad ≈ collect(curnn.cell.h.grad)
|
||||
if isdefined(rnn.cell, :c)
|
||||
@test rnn.cell.c.grad ≈ collect(curnn.cell.c.grad)
|
||||
end
|
||||
|
||||
Flux.reset!(rnn)
|
||||
Flux.reset!(curnn)
|
||||
ohx = batch_size == 1 ?
|
||||
Flux.onehot(rand(1:10), 1:10) :
|
||||
Flux.onehotbatch(rand(1:10, batch_size), 1:10)
|
||||
cuohx = gpu(ohx)
|
||||
y = (rnn(ohx); rnn(ohx))
|
||||
cuy = (curnn(cuohx); curnn(cuohx))
|
||||
|
||||
@test y.data ≈ collect(cuy.data)
|
||||
end
|
||||
end
|
||||
end
|
||||
# @testset "RNN" begin
|
||||
# @testset for R in [RNN, GRU, LSTM]
|
||||
# rnn = R(10, 5)
|
||||
# curnn = mapleaves(gpu, rnn)
|
||||
# @testset for batch_size in (1, 5)
|
||||
# Flux.reset!(rnn)
|
||||
# Flux.reset!(curnn)
|
||||
# x = batch_size == 1 ?
|
||||
# param(rand(10)) :
|
||||
# param(rand(10,batch_size))
|
||||
# cux = gpu(x)
|
||||
# y = (rnn(x); rnn(x))
|
||||
# cuy = (curnn(cux); curnn(cux))
|
||||
#
|
||||
# @test y.data ≈ collect(cuy.data)
|
||||
# @test haskey(Flux.CUDA.descs, curnn.cell)
|
||||
#
|
||||
# Δ = randn(size(y))
|
||||
#
|
||||
# Flux.back!(y, Δ)
|
||||
# Flux.back!(cuy, gpu(Δ))
|
||||
#
|
||||
# @test x.grad ≈ collect(cux.grad)
|
||||
# @test rnn.cell.Wi.grad ≈ collect(curnn.cell.Wi.grad)
|
||||
# @test rnn.cell.Wh.grad ≈ collect(curnn.cell.Wh.grad)
|
||||
# @test rnn.cell.b.grad ≈ collect(curnn.cell.b.grad)
|
||||
# @test rnn.cell.h.grad ≈ collect(curnn.cell.h.grad)
|
||||
# if isdefined(rnn.cell, :c)
|
||||
# @test rnn.cell.c.grad ≈ collect(curnn.cell.c.grad)
|
||||
# end
|
||||
#
|
||||
# Flux.reset!(rnn)
|
||||
# Flux.reset!(curnn)
|
||||
# ohx = batch_size == 1 ?
|
||||
# Flux.onehot(rand(1:10), 1:10) :
|
||||
# Flux.onehotbatch(rand(1:10, batch_size), 1:10)
|
||||
# cuohx = gpu(ohx)
|
||||
# y = (rnn(ohx); rnn(ohx))
|
||||
# cuy = (curnn(cuohx); curnn(cuohx))
|
||||
#
|
||||
# @test y.data ≈ collect(cuy.data)
|
||||
# end
|
||||
# end
|
||||
# end
|
||||
|
|
Loading…
Reference in New Issue