Skip to content

Instantly share code, notes, and snippets.

@ShigekiKarita
Last active August 29, 2015 14:25
Show Gist options
  • Save ShigekiKarita/f27d1d149ccc3e3f381f to your computer and use it in GitHub Desktop.
Save ShigekiKarita/f27d1d149ccc3e3f381f to your computer and use it in GitHub Desktop.
# from https://github.com/pfnet/chainer/blob/master/tests/functions_tests/test_split_axis.py
# "setUp()" modified and "@condition.retry()" added
import unittest
import numpy
import chainer
from chainer import cuda
from chainer import functions
from chainer import gradient_check
from chainer import testing
from chainer.testing import attr, condition
if cuda.available:
cuda.init()
retry = 100
class TestSplitAxis0(unittest.TestCase):
def setUp(self):
# NOTE: I modified here
a = numpy.random.randint(1, 100)
b = numpy.random.randint(3, 100)
c = numpy.random.randint(1, b - 2)
d = numpy.random.randint(c + 1, b)
self.x = numpy.arange(a * b, dtype=numpy.float32).reshape(a, b)
self.ys = [self.x[:,:c], self.x[:,c:d], self.x[:,d:]]
self.ys_section = [c, d]
self.axis = 1
def check_forward(self, x_data, ys_data, indices_or_sections, axis):
x = chainer.Variable(x_data)
ys = functions.split_axis(x, indices_or_sections, axis)
for yd, y in zip(ys_data, ys):
gradient_check.assert_allclose(yd, y.data, atol=0, rtol=0)
@condition.retry(retry)
def test_forward_cpu(self):
self.check_forward(self.x, self.ys, self.ys_section, self.axis)
@condition.retry(retry)
@attr.gpu
def test_forward_gpu(self):
self.check_forward(
cuda.to_gpu(self.x),
[cuda.to_gpu(y.copy()) for y in self.ys],
self.ys_section, axis=self.axis)
def check_backward(self, x_data, indices_or_sections, axis):
x = chainer.Variable(x_data)
ys = functions.split_axis(x, indices_or_sections, axis)
for y in ys:
y.grad = y.data
ys[0].backward()
gradient_check.assert_allclose(x.data, x.grad, atol=0, rtol=0)
@condition.retry(retry)
def test_backward_cpu(self):
self.check_backward(self.x, self.ys_section, axis=self.axis)
@condition.retry(retry)
@attr.gpu
def test_backward_gpu(self):
self.check_backward(
cuda.to_gpu(self.x), self.ys_section, axis=self.axis)
testing.run_module(__name__, __file__)
....
----------------------------------------------------------------------
Ran 4 tests in 0.163s
OK
.F.F
======================================================================
FAIL: test_backward_gpu (mytest_split_axis.TestSplitAxis0)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/karita/.virtualenvs/v3.4.3/lib/python3.4/site-packages/chainer-1.1.1-py3.4.egg/chainer/testing/condition.py", line 77, in wrapper
fail()
File "/home/karita/.virtualenvs/v3.4.3/lib/python3.4/site-packages/chainer-1.1.1-py3.4.egg/chainer/testing/condition.py", line 57, in fail
instance.fail(msg)
AssertionError:
Fail: 100, Success: 0
The first error message:
Traceback (most recent call last):
File "/home/karita/.virtualenvs/v3.4.3/lib/python3.4/site-packages/chainer-1.1.1-py3.4.egg/chainer/testing/condition.py", line 63, in <lambda>
lambda: f(*args, **kwargs),
File "/tmp/mytest_split_axis.py", line 69, in test_backward_gpu
cuda.to_gpu(self.x), self.ys_section, axis=self.axis)
File "/tmp/mytest_split_axis.py", line 54, in check_backward
ys = functions.split_axis(x, indices_or_sections, axis)
File "/home/karita/.virtualenvs/v3.4.3/lib/python3.4/site-packages/chainer-1.1.1-py3.4.egg/chainer/functions/split_axis.py", line 125, in split_axis
return SplitAxis(indices_or_sections, axis)(x)
File "/home/karita/.virtualenvs/v3.4.3/lib/python3.4/site-packages/chainer-1.1.1-py3.4.egg/chainer/function.py", line 166, in __call__
outputs = self.forward(in_data)
File "/home/karita/.virtualenvs/v3.4.3/lib/python3.4/site-packages/chainer-1.1.1-py3.4.egg/chainer/function.py", line 252, in forward
return self.forward_gpu(inputs)
File "/home/karita/.virtualenvs/v3.4.3/lib/python3.4/site-packages/chainer-1.1.1-py3.4.egg/chainer/functions/split_axis.py", line 82, in forward_gpu
kernel(y, x[0], cdimy, self.cdimx, self.rdim, prev_i)
File "/home/karita/.virtualenvs/v3.4.3/lib/python3.4/site-packages/pycuda/elementwise.py", line 236, in __call__
func.prepared_async_call(grid, block, stream, *invocation_args)
File "/home/karita/.virtualenvs/v3.4.3/lib/python3.4/site-packages/pycuda/driver.py", line 508, in function_prepared_async_call
arg_buf = pack(func.arg_format, *args)
struct.error: required argument is not an integer
======================================================================
FAIL: test_forward_gpu (mytest_split_axis.TestSplitAxis0)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/karita/.virtualenvs/v3.4.3/lib/python3.4/site-packages/chainer-1.1.1-py3.4.egg/chainer/testing/condition.py", line 77, in wrapper
fail()
File "/home/karita/.virtualenvs/v3.4.3/lib/python3.4/site-packages/chainer-1.1.1-py3.4.egg/chainer/testing/condition.py", line 57, in fail
instance.fail(msg)
AssertionError:
Fail: 100, Success: 0
The first error message:
Traceback (most recent call last):
File "/home/karita/.virtualenvs/v3.4.3/lib/python3.4/site-packages/chainer-1.1.1-py3.4.egg/chainer/testing/condition.py", line 63, in <lambda>
lambda: f(*args, **kwargs),
File "/tmp/mytest_split_axis.py", line 50, in test_forward_gpu
self.ys_section, axis=self.axis)
File "/tmp/mytest_split_axis.py", line 36, in check_forward
ys = functions.split_axis(x, indices_or_sections, axis)
File "/home/karita/.virtualenvs/v3.4.3/lib/python3.4/site-packages/chainer-1.1.1-py3.4.egg/chainer/functions/split_axis.py", line 125, in split_axis
return SplitAxis(indices_or_sections, axis)(x)
File "/home/karita/.virtualenvs/v3.4.3/lib/python3.4/site-packages/chainer-1.1.1-py3.4.egg/chainer/function.py", line 166, in __call__
outputs = self.forward(in_data)
File "/home/karita/.virtualenvs/v3.4.3/lib/python3.4/site-packages/chainer-1.1.1-py3.4.egg/chainer/function.py", line 252, in forward
return self.forward_gpu(inputs)
File "/home/karita/.virtualenvs/v3.4.3/lib/python3.4/site-packages/chainer-1.1.1-py3.4.egg/chainer/functions/split_axis.py", line 82, in forward_gpu
kernel(y, x[0], cdimy, self.cdimx, self.rdim, prev_i)
File "/home/karita/.virtualenvs/v3.4.3/lib/python3.4/site-packages/pycuda/elementwise.py", line 236, in __call__
func.prepared_async_call(grid, block, stream, *invocation_args)
File "/home/karita/.virtualenvs/v3.4.3/lib/python3.4/site-packages/pycuda/driver.py", line 508, in function_prepared_async_call
arg_buf = pack(func.arg_format, *args)
struct.error: required argument is not an integer
----------------------------------------------------------------------
Ran 4 tests in 0.169s
FAILED (failures=2)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment