Exemplo n.º 1
0
 def __init__(self, inmesh = None, hiddenmesh = None, outmesh = None, **args):
     if not self.symmetricdirections:
         raise NotImplementedError("BorderSwipingNetworks are currently limited so direction-symmetric weights.")
     if inmesh != None:
         args['dims'] = inmesh.dims
     SwipingNetwork.__init__(self, **args)
     if inmesh != None:
         self._buildBorderStructure(inmesh, hiddenmesh, outmesh)
         self.sortModules()
Exemplo n.º 2
0
 def __init__(self, inmesh=None, hiddenmesh=None, outmesh=None, **args):
     if not self.symmetricdirections:
         raise NotImplementedError(
             "BorderSwipingNetworks are currently limited so direction-symmetric weights."
         )
     if inmesh != None:
         args['dims'] = inmesh.dims
     SwipingNetwork.__init__(self, **args)
     if inmesh != None:
         self._buildBorderStructure(inmesh, hiddenmesh, outmesh)
         self.sortModules()
    def __init__(self, dims, **args):
        """ The one required argument specifies the sizes of each dimension (minimum 2) """
        assert len(dims) == 2
        SwipingNetwork.__init__(self, dims=dims, **args)
        if self.mariopos == None:
            self.mariopos = (dims[0] / 2, dims[1] / 2)

        pdims = product(dims)
        # the input is a 2D-mesh (as a view on a flat input layer)
        inmod = LinearLayer(self.insize * pdims, name='input')
        inmesh = ModuleMesh.viewOnFlatLayer(inmod, dims, 'inmesh')

        # the output is a 2D-mesh (as a view on a flat sigmoid output layer)
        outmod = self.outcomponentclass(self.outputs * pdims, name='output')
        outmesh = ModuleMesh.viewOnFlatLayer(outmod, dims, 'outmesh')

        if self.componentclass is MDLSTMLayer:
            c = lambda: MDLSTMLayer(self.hsize, 2, self.peepholes).meatSlice()
            hiddenmesh = ModuleMesh(c, (self.size, self.size, 4),
                                    'hidden',
                                    baserename=True)
        else:
            hiddenmesh = ModuleMesh.constructWithLayers(
                self.componentclass, self.hsize,
                tuple(list(dims) + [self.swipes]), 'hidden')

        self._buildSwipingStructure(inmesh, hiddenmesh, outmesh)

        o = LinearLayer(self.outputs)
        self.addConnection(IdentityConnection(outmesh[self.mariopos], o))
        self.outmodules = []
        self.addOutputModule(o)

        # add the identity connections for the states
        for m in self.modules:
            if isinstance(m, MDLSTMLayer):
                tmp = m.stateSlice()
                index = 0
                for c in list(self.connections[m]):
                    if isinstance(c.outmod, MDLSTMLayer):
                        self.addConnection(
                            IdentityConnection(
                                tmp,
                                c.outmod.stateSlice(),
                                outSliceFrom=self.hsize * (index),
                                outSliceTo=self.hsize * (index + 1)))
                        index += 1

        # special inputs
        self.addInputModule(LinearLayer(2, name='specialin'))
        self.addConnection(FullConnection(self['specialin'], o))

        self.sortModules()
Exemplo n.º 4
0
    def __init__(self, dims, **args):
        """ The one required argument specifies the sizes of each dimension (minimum 2) """
        assert len(dims) == 2
        SwipingNetwork.__init__(self, dims = dims, **args)
        if self.mariopos == None:
            self.mariopos = (dims[0]/2, dims[1]/2)
        
        pdims = product(dims)
        # the input is a 2D-mesh (as a view on a flat input layer)
        inmod = LinearLayer(self.insize*pdims, name = 'input')
        inmesh = ModuleMesh.viewOnFlatLayer(inmod, dims, 'inmesh')
        
        # the output is a 2D-mesh (as a view on a flat sigmoid output layer)
        outmod = self.outcomponentclass(self.outputs*pdims, name = 'output')
        outmesh = ModuleMesh.viewOnFlatLayer(outmod, dims, 'outmesh')
        
        if self.componentclass is MDLSTMLayer:
            c = lambda: MDLSTMLayer(self.hsize, 2, self.peepholes).meatSlice()
            hiddenmesh = ModuleMesh(c, (self.size, self.size, 4), 'hidden', baserename = True)
        else:
            hiddenmesh = ModuleMesh.constructWithLayers(self.componentclass, self.hsize, tuple(list(dims)+[self.swipes]), 'hidden')
        
        self._buildSwipingStructure(inmesh, hiddenmesh, outmesh)
        
        
        o = LinearLayer(self.outputs)
        self.addConnection(IdentityConnection(outmesh[self.mariopos], o))
        self.outmodules = []
        self.addOutputModule(o)
        
        
        # add the identity connections for the states
        for m in self.modules:
            if isinstance(m, MDLSTMLayer):
                tmp = m.stateSlice()
                index = 0
                for c in list(self.connections[m]):
                    if isinstance(c.outmod, MDLSTMLayer):
                        self.addConnection(IdentityConnection(tmp, c.outmod.stateSlice(), 
                                                              outSliceFrom = self.hsize*(index), 
                                                              outSliceTo = self.hsize*(index+1)))
                        index += 1
 
        # special inputs
        self.addInputModule(LinearLayer(2, name = 'specialin'))
        self.addConnection(FullConnection(self['specialin'], o))
 
        self.sortModules()