eriklindernoren--ml-from-scratch
35 行
1.1 KiB
Python
35 行
1.1 KiB
Python
from __future__ import print_function
|
|
import numpy as np
|
|
from mlfromscratch.utils import to_categorical
|
|
from mlfromscratch.deep_learning.optimizers import Adam
|
|
from mlfromscratch.deep_learning.loss_functions import SquareLoss
|
|
from mlfromscratch.deep_learning.layers import Dense, Dropout, Flatten, Activation, Reshape, BatchNormalization
|
|
from mlfromscratch.deep_learning import NeuralNetwork
|
|
from mlfromscratch.reinforcement_learning import DeepQNetwork
|
|
|
|
|
|
def main():
|
|
dqn = DeepQNetwork(env_name='CartPole-v1',
|
|
epsilon=0.9,
|
|
gamma=0.8,
|
|
decay_rate=0.005,
|
|
min_epsilon=0.1)
|
|
|
|
# Model builder
|
|
def model(n_inputs, n_outputs):
|
|
clf = NeuralNetwork(optimizer=Adam(), loss=SquareLoss)
|
|
clf.add(Dense(64, input_shape=(n_inputs,)))
|
|
clf.add(Activation('relu'))
|
|
clf.add(Dense(n_outputs))
|
|
return clf
|
|
|
|
dqn.set_model(model)
|
|
|
|
print ()
|
|
dqn.model.summary(name="Deep Q-Network")
|
|
|
|
dqn.train(n_epochs=500)
|
|
dqn.play(n_epochs=100)
|
|
|
|
if __name__ == "__main__":
|
|
main() |