chainer的实现
https://github.com/chainer/chainer/blob/master/chainer/functions/pooling/roi_pooling_2d.py
有cpu和gpu的分别实现
gpu的实现中使用了cuda.elementwise,追跟溯源。得到以下代码:
@memoize()
def elementwise(in_params, out_params, operation, name, **kwargs):
"""Creates an elementwise kernel function.
This function uses :func:`~chainer.backends.cuda.memoize` to cache the
kernel object, i.e. the resulting kernel object is cached for each argument
combination and CUDA device.
The arguments are the same as those for
:class:`cupy.ElementwiseKernel`, except that the ``name`` argument is
mandatory.
"""
check_cuda_available()
return cupy.ElementwiseKernel(
in_params, out_params, operation, name, **kwargs)
所以chainer的roi_pooling就是用cupy实现的。本人再调试一下,放出测试代码。