Beispiel #1
0
    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
Beispiel #2
0
 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)
Beispiel #3
0
    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
            }
Beispiel #4
0
 def test_no_initial_bias(self):
     ndim = 3
     ksize = 3
     link = deconvolution_nd.DeconvolutionND(ndim, 3, 2, ksize, nobias=True)
     self.assertIsNone(link.b)