提交 0c2eb3f0 authored 作者: Arnaud Bergeron's avatar Arnaud Bergeron

Change the corrMM test to use floatX as the data type.

上级 98d7817f
...@@ -3,13 +3,14 @@ import unittest ...@@ -3,13 +3,14 @@ import unittest
import numpy import numpy
import theano import theano
from theano import config
from theano.tests import unittest_tools as utt from theano.tests import unittest_tools as utt
from theano.tensor.nnet.corr import CorrMM, CorrMM_gradWeights, CorrMM_gradInputs from theano.tensor.nnet.corr import CorrMM, CorrMM_gradWeights, CorrMM_gradInputs
from ..type import gpuarray_shared_constructor from ..type import gpuarray_shared_constructor
from ..blas import GpuCorrMM, GpuCorrMM_gradWeights, GpuCorrMM_gradInputs from ..blas import GpuCorrMM, GpuCorrMM_gradWeights, GpuCorrMM_gradInputs
from .config import mode_with_gpu, mode_without_gpu from .config import mode_with_gpu, mode_without_gpu, ref_cast
class TestCorrMM(unittest.TestCase): class TestCorrMM(unittest.TestCase):
...@@ -22,15 +23,16 @@ class TestCorrMM(unittest.TestCase): ...@@ -22,15 +23,16 @@ class TestCorrMM(unittest.TestCase):
inputs_shape = [inputs_shape[i] for i in (0, 3, 1, 2)] inputs_shape = [inputs_shape[i] for i in (0, 3, 1, 2)]
filters_shape = [filters_shape[i] for i in (0, 3, 1, 2)] filters_shape = [filters_shape[i] for i in (0, 3, 1, 2)]
inputs_val = numpy.random.random(inputs_shape).astype('float32') inputs_val = numpy.random.random(inputs_shape).astype(config.floatX)
filters_val = numpy.random.random(filters_shape).astype('float32') filters_val = numpy.random.random(filters_shape).astype(config.floatX)
inputs = gpuarray_shared_constructor(inputs_val) inputs = gpuarray_shared_constructor(inputs_val)
filters = gpuarray_shared_constructor(filters_val) filters = gpuarray_shared_constructor(filters_val)
conv_ref = CorrMM(border_mode=border_mode, conv_ref = CorrMM(border_mode=border_mode,
filter_dilation=filter_dilation, filter_dilation=filter_dilation,
subsample=subsample)(inputs, filters) subsample=subsample)(ref_cast(inputs),
ref_cast(filters))
f_ref = theano.function([], conv_ref, mode=mode_without_gpu) f_ref = theano.function([], conv_ref, mode=mode_without_gpu)
conv = GpuCorrMM(border_mode=border_mode, conv = GpuCorrMM(border_mode=border_mode,
...@@ -120,20 +122,20 @@ class TestCorrMM(unittest.TestCase): ...@@ -120,20 +122,20 @@ class TestCorrMM(unittest.TestCase):
filters_shape = [filters_shape[i] for i in (0, 3, 1, 2)] filters_shape = [filters_shape[i] for i in (0, 3, 1, 2)]
dCdH_shape = [dCdH_shape[i] for i in (0, 3, 1, 2)] dCdH_shape = [dCdH_shape[i] for i in (0, 3, 1, 2)]
inputs_val = numpy.random.random(inputs_shape).astype('float32') inputs_val = numpy.random.random(inputs_shape).astype(config.floatX)
dCdH_val = numpy.random.random(dCdH_shape).astype('float32') dCdH_val = numpy.random.random(dCdH_shape).astype(config.floatX)
inputs = gpuarray_shared_constructor(inputs_val) inputs = gpuarray_shared_constructor(inputs_val)
dCdH = gpuarray_shared_constructor(dCdH_val) dCdH = gpuarray_shared_constructor(dCdH_val)
shape = gpuarray_shared_constructor(numpy.array(filters_shape[2:])) shape = gpuarray_shared_constructor(numpy.array(filters_shape[2:]))
if (subsample == (1, 1)): if (subsample == (1, 1)):
conv_ref = CorrMM_gradWeights(subsample=subsample)( conv_ref = CorrMM_gradWeights(subsample=subsample)(
inputs, dCdH) ref_cast(inputs), ref_cast(dCdH))
conv_gemm = GpuCorrMM_gradWeights(subsample=subsample)( conv_gemm = GpuCorrMM_gradWeights(subsample=subsample)(
inputs, dCdH) inputs, dCdH)
else: else:
conv_ref = CorrMM_gradWeights(subsample=subsample)( conv_ref = CorrMM_gradWeights(subsample=subsample)(
inputs, dCdH, shape=shape) ref_cast(inputs), ref_cast(dCdH), shape=shape)
conv_gemm = GpuCorrMM_gradWeights(subsample=subsample)( conv_gemm = GpuCorrMM_gradWeights(subsample=subsample)(
inputs, dCdH, shape=shape) inputs, dCdH, shape=shape)
...@@ -167,8 +169,8 @@ class TestCorrMM(unittest.TestCase): ...@@ -167,8 +169,8 @@ class TestCorrMM(unittest.TestCase):
inputs_shape = [inputs_shape[i] for i in (0, 3, 1, 2)] inputs_shape = [inputs_shape[i] for i in (0, 3, 1, 2)]
filters_shape = [filters_shape[i] for i in (0, 3, 1, 2)] filters_shape = [filters_shape[i] for i in (0, 3, 1, 2)]
inputs_val = numpy.random.random(inputs_shape).astype('float32') inputs_val = numpy.random.random(inputs_shape).astype(config.floatX)
filters_val = numpy.random.random(filters_shape).astype('float32') filters_val = numpy.random.random(filters_shape).astype(config.floatX)
inputs = gpuarray_shared_constructor(inputs_val) inputs = gpuarray_shared_constructor(inputs_val)
filters = gpuarray_shared_constructor(filters_val) filters = gpuarray_shared_constructor(filters_val)
...@@ -178,12 +180,13 @@ class TestCorrMM(unittest.TestCase): ...@@ -178,12 +180,13 @@ class TestCorrMM(unittest.TestCase):
if (subsample == (1, 1)): if (subsample == (1, 1)):
conv_ref = CorrMM_gradInputs(subsample=subsample)( conv_ref = CorrMM_gradInputs(subsample=subsample)(
kern=filters, topgrad=inputs) kern=ref_cast(filters), topgrad=ref_cast(inputs))
conv_gemm = GpuCorrMM_gradInputs(subsample=subsample)( conv_gemm = GpuCorrMM_gradInputs(subsample=subsample)(
kern=filters, topgrad=inputs) kern=filters, topgrad=inputs)
else: else:
conv_ref = CorrMM_gradInputs(subsample=subsample)( conv_ref = CorrMM_gradInputs(subsample=subsample)(
kern=filters, topgrad=inputs, shape=bottom_shape) kern=ref_cast(filters), topgrad=ref_cast(inputs),
shape=bottom_shape)
conv_gemm = GpuCorrMM_gradInputs(subsample=subsample)( conv_gemm = GpuCorrMM_gradInputs(subsample=subsample)(
kern=filters, topgrad=inputs, shape=bottom_shape) kern=filters, topgrad=inputs, shape=bottom_shape)
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论