def step(self,x=None):
		if x is None:
			x=Tensor.context

		obs_array = x.content.data
		#print "sum",obs_array.sum()
		obs_processed = np.maximum(obs_array, self.last_observation)  # Take maximum from two frames

		# Compose State : 4-step sequential observation
		if self.func.hist_size == 4:
			self.state = np.asanyarray([self.state[1], self.state[2], self.state[3], obs_processed], dtype=np.uint8)
		elif self.func.hist_size == 2:
			self.state = np.asanyarray([self.state[1], obs_processed], dtype=np.uint8)
		elif self.func.hist_size == 1:
			self.state = np.asanyarray([obs_processed], dtype=np.uint8)
		else:
			print("self.DQN.hist_size err")

		state_ = np.asanyarray(self.state.reshape(1, self.func.hist_size, self.image_feature_dim), dtype=np.float32)
		if Deel.gpu >= 0:
			state_ = cuda.to_gpu(state_)

		# Exploration decays along the time sequence
		if self.policyFrozen is False:  # Learning ON/OFF
			if self.func.initial_exploration < self.time:
				self.epsilon -= self.epsilonDelta
				if self.epsilon < self.min_eps:
					self.epsilon = self.min_eps
				eps = self.epsilon
			else:  # Initial Exploation Phase
				print "Initial Exploration : %d/%d steps" % (self.time, self.func.initial_exploration)
				eps = 1.0
		else:  # Evaluation
			print "Policy is Frozen"
			eps = 0.05

		# Generate an Action by e-greedy action selection
		action, Q_now = self.func.e_greedy(state_, eps)

		return self,action, eps, Q_now, obs_array
dataset/ETHPy150Open uei/deel/deel/network/dqn.py/DQN.step/original