Pop

Tutorial Open AI Gym - Empezamos a crear nuestro bot (2/3)

2.Empezamos a crear nuestro bot

  • Hola a todos, en esta ocasión continuamos con nuestro  tutorial de open ai gym (Open AI) , que es un conjunto de herramientas para desarrollar y comparar algoritmos de aprendizaje. Es compatible con enseñar a los agentes de todo, desde caminar hasta jugar juegos como Pong o Pinball.
  •  En el siguiente vídeo podemos ver como como empezamos la implementación de nuestro propio agente de juego. Empezamos a explicar el código y las funciones que utilizaremos para poder entrenar a nuestro modelo.
  • Aquí os dejo el código visto en el vídeo:
#Importamos las librerias necesarias para el ejemplo
import gym
import random
import numpy as np
from keras.models     import Sequential
from keras.layers     import Dense
from keras.optimizers import Adam

env = gym.make('CartPole-v1') #creamos nuestro entorno de trabajo
env.reset()
goal_steps = 500  # definimos el número de pasos para el entrenamiento
score_requirement = 60 #puntuación requerida
intial_games = 10000  #Entrenanmiento inicial

#Función que ejecuta un bucle para hacer varias acciones para jugar el 
#juego.Por eso, intentar jugaremos hasta 500 pasos como máximo.
def play_a_random_game_first():
    try:
        for step_index in range(goal_steps):
            #env.render() #PAra representar el juego
            action = env.action_space.sample() #Elegimos acción al azar
            #Acción aleatoria a través de la función que elige los 
            #los resultado del siguiente paso, según la acción pasada como
            #parametro
            observation, reward, done, info = env.step(action)
            print("Paso {}:".format(step_index))
            print("Acción: {}".format(action))
            print("Observacion: {}".format(observation))
            print("Recompensa: {}".format(reward))
            print("Done: {}".format(done))
            print("Info: {}".format(info))
            if done:#Si juego completado
                break
    finally:
        env.reset()

play_a_random_game_first()

def model_data_preparation():
    training_data = []  # inicializamos los arrays con los datos de
    accepted_scores = [] #entrenamiento y las puntuaciones
    #Jugamos 10000 veces para obtener unos datos representativos
    for game_index in range(intial_games):
        score = 0 #inicializamos variables
        game_memory = []
        previous_observation = []
        #inidicamos que se ejeccute 500 veces
        for step_index in range(goal_steps):
            action = random.randrange(0, 2)#Acción aleatoria.Iz=0 y De=1
            observation, reward, done, info = env.step(action)
            #almacenamos puntuacion
            if len(previous_observation) > 0:
                game_memory.append([previous_observation, action])
                
            previous_observation = observation
            score += reward
            if done:
                break
            
        if score >= score_requirement:
            accepted_scores.append(score)
            for data in game_memory:
                if data[1] == 1:
                    output = [0, 1]
                elif data[1] == 0:
                    output = [1, 0]
                training_data.append([data[0], output])
        
        #resteamos entorno y lo mostramos por pantalla
        env.reset()

    print(accepted_scores)
    
    return training_data

training_data = model_data_preparation()

No hay comentarios:

Publicar un comentario

Curso .NET Core en C# - 34.Creamos nuestro propio log

34.Creamos nuestro propio log Hola a todos. En este curso, analizaremos todos los conceptos básicos, intermedios y avanzados de  ASP.NET...