38 lines
1008 B
Python
38 lines
1008 B
Python
import logging
|
|
|
|
from mla.neuralnet import NeuralNet
|
|
from mla.neuralnet.layers import Activation, Dense
|
|
from mla.neuralnet.optimizers import Adam
|
|
from mla.rl.dqn import DQN
|
|
|
|
logging.basicConfig(level=logging.CRITICAL)
|
|
|
|
|
|
def mlp_model(n_actions, batch_size=64):
|
|
model = NeuralNet(
|
|
layers=[Dense(32), Activation("relu"), Dense(n_actions)],
|
|
loss="mse",
|
|
optimizer=Adam(),
|
|
metric="mse",
|
|
batch_size=batch_size,
|
|
max_epochs=1,
|
|
verbose=False,
|
|
)
|
|
return model
|
|
|
|
|
|
model = DQN(n_episodes=2500, batch_size=64)
|
|
model.init_environment("CartPole-v0")
|
|
model.init_model(mlp_model)
|
|
|
|
try:
|
|
# Train the model
|
|
# It can take from 300 to 2500 episodes to solve CartPole-v0 problem due to randomness of environment.
|
|
# You can stop training process using Ctrl+C signal
|
|
# Read more about this problem: https://gym.openai.com/envs/CartPole-v0
|
|
model.train(render=False)
|
|
except KeyboardInterrupt:
|
|
pass
|
|
# Render trained model
|
|
model.play(episodes=100)
|