Esempio n. 1
0
    def feedf(self, data):
        """
		Pool features within a given receptive from the input data.

		Args:
		-----
			data: An N x k x m1 x n1 array of input plains.

		Returns:
		-------
			A N x k x m2 x n2 array of output plains.
		"""
        if self.decode:
            if self.type == 'max':
                pooled = np.kron(data, np.ones(self.factor))
            else:
                pooled = np.kron(data, np.ones(
                    self.factor)) * (1.0 / np.sum(self.factor))
        else:
            if self.type == 'max':
                pooled, self.positions = maxpool(data, self.factor)
            else:
                pooled = downsample(data,
                                    (1, 1, self.factor[0], self.factor[1]))

        return pooled
Esempio n. 2
0
    def bprop(self, dEdo):
        """
		Compute error gradients and return sum of error from output down 
		to this layer.

		Args:
		-----
			dEdo: A N x l x m2 x n2 array of errors from prev layers.

		Returns:
		--------
			A N x k x x m1 x m1 array of errors.
		"""
        if self.decode:
            dE = downsample(dEdo,
                            (1, 1, self.factor[0], self.factor[1])) * np.sum(
                                self.factor)
        else:
            if self.type == 'max':
                dE = np.kron(dEdo, np.ones(self.factor)) * self.positions
            else:
                dE = np.kron(dEdo, np.ones(
                    self.factor)) * (1.0 / np.sum(self.factor))

        return dE
Esempio n. 3
0
	def processState(self):
		"""
		Return the processed current state of the robot.

		Args:
		----
			A tuple of touch, ir and image sensors reading.
		"""

		state, factor = self.state, self.params['downsample']
		touch, ir, img = state[0][0], state[0][1], [obsv[2] for obsv in state]

		img = np.asarray(img)
		img = np.transpose(img, (1, 2, 0))
		img = downsample(img, (factor[0], factor[1], 1))

		return (touch, ir, img)
Esempio n. 4
0
    def processState(self, state):
        """
        Process the sequence of frames that make up a state.

        Args:
        -----
            state: A list of img_height x img_width arrays repr. frames.

        Returns:
        --------
            An cropped_img_height x cropped_img_width x no_frames array.
        """

        same_state = state
        if len(state) < self.game_params['state_frames']:
            same_state = state + ([state[-1]] * (self.game_params['state_frames'] - len(state)))

        #TODO: remove flickering between frames.
        phi_s = np.asarray(same_state)
        phi_s = np.transpose(phi_s, (1, 2, 0))
        return downsample(phi_s, (self.game_params['downsample'][0], self.game_params['downsample'][1], 1))
Esempio n. 5
0
File: cnn.py Progetto: ev0/Cnn
	def feedf(self, data):
		"""
		Pool features within a given receptive from the input data.

		Args:
		-----
			data: An N x k x m1 x n1 array of input plains.

		Returns:
		-------
			A N x k x m2 x n2 array of output plains.
		"""
		if self.type == 'max':
			_data = np.asarray(data, dtype='float32')
			x = tn.ftensor4('x')
			f = thn.function([], max_pool(x, self.factor), givens={x: shared(_data)})
			g = thn.function([], max_pool_same(x, self.factor)/x, givens={x: shared(_data + 0.0000000001)})
			self.grad = g()
			self.grad[np.where(np.isnan(self.grad))] = 0
			return f()
		else:
			return downsample(data, (1, 1, self.factor[0], self.factor[1]))
Esempio n. 6
0
	def bprop(self, dEdo):
		"""
		Compute error gradients and return sum of error from output down 
		to this layer.

		Args:
		-----
			dEdo: A N x l x m2 x n2 array of errors from prev layers.

		Returns:
		--------
			A N x k x x m1 x m1 array of errors.
		"""
		if self.decode:
			dE = downsample(dEdo, (1, 1, self.factor[0], self.factor[1])) * np.sum(self.factor)
		else:
			if self.type == 'max':
				dE = np.kron(dEdo, np.ones(self.factor)) * self.positions
			else:
				dE = np.kron(dEdo, np.ones(self.factor)) * (1.0 / np.sum(self.factor))

		return dE
Esempio n. 7
0
	def feedf(self, data):
		"""
		Pool features within a given receptive from the input data.

		Args:
		-----
			data: An N x k x m1 x n1 array of input plains.

		Returns:
		-------
			A N x k x m2 x n2 array of output plains.
		"""
		if self.decode:
			if self.type == 'max':
				pooled = np.kron(data, np.ones(self.factor))
			else:
				pooled = np.kron(data, np.ones(self.factor)) * (1.0 / np.sum(self.factor))
		else:
			if self.type == 'max':
				pooled, self.positions = maxpool(data, self.factor)
			else:
				pooled = downsample(data, (1, 1, self.factor[0], self.factor[1]))

		return pooled