def _maxrandpool ( input, ds, p, ignore_border = False ): """ provide random pooling among the top 'p' sorted outputs p = 0 is maxpool """ rng = numpy.random.RandomState(24546) out_shp = (input.shape[0], input.shape[1], input.shape[2]/ds[0], input.shape[3]/ds[1]) srng = RandomStreams(rng.randint(2147462579)) pos = srng.random_integers(size=(1,1), low = ds[0]*ds[1]-1-p, high = ds[0]*ds[1]-1) neib = images2neibs(input, neib_shape = ds , mode = 'valid' if ignore_border is False else 'ignore_borders') neib = neib.sort(axis = -1) pooled_vectors = neib[:,pos] return T.reshape(pooled_vectors, out_shp, ndim = 4 )
def _maxrandpool(input, ds, p, ignore_border=False): """ provide random pooling among the top 'p' sorted outputs p = 0 is maxpool """ rng = numpy.random.RandomState(24546) out_shp = (input.shape[0], input.shape[1], input.shape[2] / ds[0], input.shape[3] / ds[1]) srng = RandomStreams(rng.randint(2147462579)) pos = srng.random_integers(size=(1, 1), low=ds[0] * ds[1] - 1 - p, high=ds[0] * ds[1] - 1) neib = images2neibs( input, neib_shape=ds, mode='valid' if ignore_border is False else 'ignore_borders') neib = neib.sort(axis=-1) pooled_vectors = neib[:, pos] return T.reshape(pooled_vectors, out_shp, ndim=4)