def buildSwipingNetwork(dimensions=3):
    d = tuple([2] * dimensions)
    inmesh = ModuleMesh.constructWithLayers(LinearLayer, 1, d, 'in')
    hmesh = ModuleMesh.constructWithLayers(LinearLayer, 1,
                                           tuple(list(d) + [2**len(d)]), 'h')
    outmesh = ModuleMesh.constructWithLayers(LinearLayer, 1, d, 'out')
    return BorderSwipingNetwork(inmesh, hmesh, outmesh)
Exemple #2
0
    def __init__(self, **args):
        """
        :key clusterssize: the side of the square for clustering: if > 1, an extra layer for cluster-construction is added
        :key clusteroverlap: by how much should the cluster overlap (default = 0)
        :key directlink: should connections from the input directly to the bottleneck be included?
        """
        if 'size' in args:
            self.size = args['size']
        args['dims'] = (self.size, self.size)
        assert self.size > 1, 'Minimal board size is 2.'
        BorderSwipingNetwork.__init__(self, **args)

        if not self.rebuilt:
            self._buildCaptureNetwork()
            self.sortModules()
            self.rebuilt = True
            self.setArgs(rebuilt = True)
Exemple #3
0
    def __init__(self, **args):
        """
        @param clusterssize: the side of the square for clustering: if > 1, an extra layer for cluster-construction is added 
        @param clusteroverlap: by how much should the cluster overlap (default = 0)
        @param directlink: should connections from the input directly to the bottleneck be included?         
        """
        if 'size' in args:
            self.size = args['size']
        args['dims'] = (self.size, self.size)
        assert self.size > 1, 'Minimal board size is 2.'
        BorderSwipingNetwork.__init__(self, **args)

        if not self.rebuilt:
            self._buildCaptureNetwork()
            self.sortModules()
            self.rebuilt = True
            self.setArgs(rebuilt=True)
def buildSimpleBorderSwipingNet(size = 3, dim = 3, hsize = 1, predefined = {}):
    """ build a simple swiping network,of given size and dimension, using linear inputs and output"""
    # assuming identical size in all dimensions
    dims = tuple([size]*dim)
    # also includes one dimension for the swipes
    hdims = tuple(list(dims)+[2**dim])
    inmod = LinearLayer(size**dim, name = 'input')
    inmesh = ModuleMesh.viewOnFlatLayer(inmod, dims, 'inmesh')
    outmod = LinearLayer(size**dim, name = 'output')
    outmesh = ModuleMesh.viewOnFlatLayer(outmod, dims, 'outmesh')
    hiddenmesh = ModuleMesh.constructWithLayers(TanhLayer, hsize, hdims, 'hidden')
    return BorderSwipingNetwork(inmesh, hiddenmesh, outmesh, predefined = predefined)