예제 #1
0
    def __init__(self, inmod, outmod, permutation, blocksize, *args, **kwargs):
        Connection.__init__(self, inmod, outmod, *args, **kwargs)
        if self.indim != self.outdim:
            raise ValueError("Indim (%i) does not equal outdim (%i)" %
                             (self.indim, self.outdim))
        if len(permutation) * blocksize != self.indim:
            raise ValueError(
                "Permutation has wrong size: should be %i but is %i." %
                ((self.indim / blocksize), len(permutation)))

        self.permutation = array(permutation)
        self.invpermutation = permute(range(len(permutation)), permutation)
        self.blocksize = blocksize
예제 #2
0
    def __init__(self, inmod, outmod, permutation, blocksize, *args, **kwargs):
        Connection.__init__(self, inmod, outmod, *args, **kwargs)
        if self.indim != self.outdim:
            raise ValueError("Indim (%i) does not equal outdim (%i)" % (
               self.indim, self.outdim))
        if len(permutation) * blocksize != self.indim:
            raise ValueError(
                "Permutation has wrong size: should be %i but is %i." %(
                (self.indim / blocksize), len(permutation)))

        self.permutation = array(permutation)
        self.invpermutation = permute(list(range(len(permutation))), permutation)
        self.blocksize = blocksize
예제 #3
0
파일: mdrnn.py 프로젝트: khriku56/pybrain3
 def _buildTopology(self):
     inlayer = self.inlayerclass(self.indim)
     outlayer = self.outlayerclass(self.sequenceLength * self.outsize)
     self.hiddenlayers = []
     # Add connections and layers
     self.addInputModule(inlayer)
     for p in self._permsForSwiping():
         i = self._makeMdrnnLayer()
         self.hiddenlayers.append(i)
         # Make a connection that permutes the input...
         in_pc = PermutationConnection(inlayer, i, p, self.blocksize)
         # .. and one that permutes it back.
         pinv = permute(list(range(len(p))), p)
         out_pc = PermutationConnection(i, outlayer, pinv, self.outsize)
         self.addModule(i)
         self.addConnection(in_pc)
         self.addConnection(out_pc)
     self.addOutputModule(outlayer)
예제 #4
0
파일: mdrnn.py 프로젝트: saber233/pybrain
 def _buildTopology(self):
     inlayer = self.inlayerclass(self.indim)
     outlayer = self.outlayerclass(self.sequenceLength * self.outsize)
     self.hiddenlayers = []
     # Add connections and layers
     self.addInputModule(inlayer)
     for p in self._permsForSwiping():
         i = self._makeMdrnnLayer()
         self.hiddenlayers.append(i)
         # Make a connection that permutes the input...
         in_pc = PermutationConnection(inlayer, i, p, self.blocksize)
         # .. and one that permutes it back.
         pinv = permute(list(range(len(p))), p)
         out_pc = PermutationConnection(i, outlayer, pinv, self.outsize)
         self.addModule(i)
         self.addConnection(in_pc)
         self.addConnection(out_pc)
     self.addOutputModule(outlayer)
예제 #5
0
 def _backwardImplementation(self, outerr, inerr, inbuf):
     outerr = outerr.reshape(self.indim / self.blocksize, self.blocksize)
     outerr = permute(outerr, self.invpermutation)
     outerr.shape = self.indim,
     inerr += outerr
예제 #6
0
 def _forwardImplementation(self, inbuf, outbuf):
     inbuf = inbuf.reshape(self.indim / self.blocksize, self.blocksize)
     inbuf = permute(inbuf, self.permutation)
     inbuf.shape = self.indim,
     outbuf += inbuf
예제 #7
0
 def _backwardImplementation(self, outerr, inerr, inbuf):
     outerr = outerr.reshape(self.indim / self.blocksize, self.blocksize)
     outerr = permute(outerr, self.invpermutation)
     outerr.shape = self.indim,
     inerr += outerr
예제 #8
0
 def _forwardImplementation(self, inbuf, outbuf):
     inbuf = inbuf.reshape(self.indim / self.blocksize, self.blocksize)
     inbuf = permute(inbuf, self.permutation)
     inbuf.shape = self.indim,
     outbuf += inbuf