def create_link(self, initializers): initial_bias, = initializers if self.in_channels == 'omit': link = deconvolution_nd.DeconvolutionND(self.ndim, self.out_channels, self.ksize, stride=self.stride, pad=self.pad, outsize=self.outsize, initial_bias=initial_bias, nobias=self.nobias, groups=self.groups) else: link = deconvolution_nd.DeconvolutionND(self.ndim, self.in_channels, self.out_channels, self.ksize, stride=self.stride, pad=self.pad, outsize=self.outsize, initial_bias=initial_bias, nobias=self.nobias, groups=self.groups) return link
def test_deconv3d(self): in_c, out_c, x = self._get_data(3) link_nd = deconvolution_nd.DeconvolutionND(3, in_c, out_c, 2, initialW=1) link_3d = deconvolution_nd.Deconvolution3D(in_c, out_c, 2, initialW=1) testing.assert_allclose(link_nd(x).data, link_3d(x).data)
def setUp(self): N = 2 in_channels = 3 out_channels = 2 ndim = len(self.dims) ksize = (3, ) * ndim stride = (2, ) * ndim pad = (1, ) * ndim if self.used_outsize == 'case1' or self.used_outsize == 'None': # Use output size determined with get_deconv_outsize. outs = tuple( conv.get_deconv_outsize(d, k, s, p) for (d, k, s, p) in zip(self.dims, ksize, stride, pad)) elif self.used_outsize == 'case2': # Use possible output size other than the one determined with # get_deconv_outsize. outs = tuple( conv.get_deconv_outsize(d, k, s, p) + 1 for (d, k, s, p) in zip(self.dims, ksize, stride, pad)) if self.used_outsize != 'None': outsize = outs else: outsize = None if not self.nobias: initial_bias = initializers.Uniform(scale=1, dtype=self.dtype) else: initial_bias = None self.link = deconvolution_nd.DeconvolutionND(ndim, in_channels, out_channels, ksize, stride=stride, pad=pad, outsize=outsize, initial_bias=initial_bias, nobias=self.nobias) self.link.cleargrads() x_shape = (N, in_channels) + self.dims self.x = numpy.random.uniform(-1, 1, x_shape).astype(self.dtype) gy_shape = (N, out_channels) + outs self.gy = numpy.random.uniform(-1, 1, gy_shape).astype(self.dtype) self.check_forward_options = {} self.check_backward_options = {'eps': 1e-2, 'atol': 1e-4, 'rtol': 1e-3} if self.dtype == numpy.float16: self.check_forward_options = {'atol': 5e-3, 'rtol': 5e-2} self.check_backward_options = { 'eps': 2**-3, 'atol': 1e-2, 'rtol': 1e-1 }
def test_no_initial_bias(self): ndim = 3 ksize = 3 link = deconvolution_nd.DeconvolutionND(ndim, 3, 2, ksize, nobias=True) self.assertIsNone(link.b)