1__author__ = 'Tom Schaul, tom@idsia.ch' 2 3from pybrain.structure.connections.connection import Connection 4from pybrain.structure.parametercontainer import ParameterContainer 5from scipy import average 6 7#:TODO: backward pass 8 9class SubsamplingConnection(Connection, ParameterContainer): 10 """Connection that just averages all the inputs before forwarding.""" 11 12 def __init__(self, inmod, outmod, name=None, 13 inSliceFrom=0, inSliceTo=None, outSliceFrom=0, outSliceTo=None): 14 if outSliceTo is None: 15 outSliceTo = outmod.indim 16 size = outSliceTo - outSliceFrom 17 Connection.__init__(self, inmod, outmod, name, 18 inSliceFrom, inSliceTo, outSliceFrom, outSliceTo) 19 ParameterContainer.__init__(self, size) 20 21 def _forwardImplementation(self, inbuf, outbuf): 22 outbuf += average(inbuf) * self.params 23 24 def _backwardImplementation(self, outerr, inerr, inbuf): 25 raise NotImplementedError() 26 27