def test_match_io_fmap_range(self):
        ''' ofmap and ifmap range match. '''
        for wlkey in self.layers:
            layer = self.layers[wlkey]

            for dnkey in self.dim_nodes:

                for part in self._gen_partition(wlkey=wlkey,
                                                dnkey=dnkey,
                                                optkey='NOINPP'):

                    for pidx in part.gen_pidx():

                        ofr = partition.part_layer_ofmap_range(
                            layer, self.batch_size, part, pidx)
                        ifr = partition.part_layer_ifmap_range(
                            layer, self.batch_size, part, pidx)

                        self.assertEqual(ofr.size('b'), ifr.size('b'))

                        if isinstance(layer, ConvLayer):
                            ol = ConvLayer(nifm=ifr.size('n'),
                                           nofm=ofr.size('n'),
                                           sofm=(ofr.size('h'), ofr.size('w')),
                                           sfil=(layer.hfil, layer.wfil),
                                           strd=(layer.htrd, layer.wtrd))
                            il = ol.input_layer()
                            self.assertEqual(il.nofm, ifr.size('n'))
                        elif isinstance(layer, LocalRegionLayer):
                            nofm_beg, nofm_end = ofr.beg_end('n')[0]
                            nifm_beg, nifm_end = ifr.beg_end('n')[0]
                            self.assertEqual(nifm_beg, max(0, \
                                    nofm_beg - layer.nreg // 2))
                            self.assertEqual(nifm_end, min(layer.nifm, \
                                    nofm_end + layer.nreg - layer.nreg // 2))

                            ol = LocalRegionLayer(
                                nofm=ofr.size('n'),
                                sofm=(ofr.size('h'), ofr.size('w')),
                                nreg=layer.nreg,
                                sreg=(layer.hreg, layer.wreg),
                                strd=(layer.htrd, layer.wtrd))
                            il = ol.input_layer()

                        self.assertEqual(il.hofm, ifr.size('h'))
                        self.assertEqual(il.wofm, ifr.size('w'))
Пример #2
0
 def test_input_layer(self):
     ''' Get input layer. '''
     clayer = ConvLayer(3, 64, [28, 14], 3, strd=2)
     inlayer = clayer.input_layer()
     self.assertIsInstance(inlayer, Layer)
     self.assertEqual(inlayer.nofm, 3, 'ConvLayer: input_layer: nofm')
     self.assertEqual(inlayer.hofm, (28 - 1) * 2 + 3,
                      'ConvLayer: input_layer: hofm')
     self.assertEqual(inlayer.wofm, (14 - 1) * 2 + 3,
                      'ConvLayer: input_layer: wofm')
Пример #3
0
    def test_ifmap(self):
        ''' Get ifmap. '''
        clayer = ConvLayer(3, 64, [28, 14], 3, strd=2)
        inlayer = clayer.input_layer()
        self.assertIsInstance(inlayer, Layer)
        self.assertEqual(inlayer.nofm, clayer.nifm, 'ConvLayer: nifm')
        self.assertEqual(inlayer.hofm, clayer.hifm, 'ConvLayer: hifm')
        self.assertEqual(inlayer.wofm, clayer.wifm, 'ConvLayer: wifm')

        llayer = LocalRegionLayer(64, 28, 1, 3, strd=2)
        inlayer = llayer.input_layer()
        self.assertIsInstance(inlayer, Layer)
        self.assertEqual(inlayer.nofm, llayer.nifm, 'LocalRegionLayer: nifm')
        self.assertEqual(inlayer.hofm, llayer.hifm, 'LocalRegionLayer: hifm')
        self.assertEqual(inlayer.wofm, llayer.wifm, 'LocalRegionLayer: wifm')