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, 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()
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()