MCPcopy Index your code
hub / github.com/lazyprogrammer/machine_learning_examples / DQNAgent

Class DQNAgent

rl/linear_rl_trader.py:253–291  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

251
252
253class DQNAgent(object):
254 def __init__(self, state_size, action_size):
255 self.state_size = state_size
256 self.action_size = action_size
257 self.gamma = 0.95 # discount rate
258 self.epsilon = 1.0 # exploration rate
259 self.epsilon_min = 0.01
260 self.epsilon_decay = 0.995
261 self.model = LinearModel(state_size, action_size)
262
263 def act(self, state):
264 if np.random.rand() <= self.epsilon:
265 return np.random.choice(self.action_size)
266 act_values = self.model.predict(state)
267 return np.argmax(act_values[0]) # returns action
268
269
270 def train(self, state, action, reward, next_state, done):
271 if done:
272 target = reward
273 else:
274 target = reward + self.gamma * np.amax(self.model.predict(next_state), axis=1)
275
276 target_full = self.model.predict(state)
277 target_full[0, action] = target
278
279 # Run one training step
280 self.model.sgd(state, target_full)
281
282 if self.epsilon > self.epsilon_min:
283 self.epsilon *= self.epsilon_decay
284
285
286 def load(self, name):
287 self.model.load_weights(name)
288
289
290 def save(self, name):
291 self.model.save_weights(name)
292
293
294def play_one_episode(agent, env, is_train):

Callers 1

Calls

no outgoing calls

Tested by

no test coverage detected