Pop

Tutorial Open AI Gym - Nuestro bot cobra vida (3/3)

3.Vemos nuestro bot funcionando

  • Hola a todos, en esta ocasión finalizamos 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 acabamos la implementación de nuestro propio agente de juego. Vemos como entrenar al modelo y también podremos contemplar a nuestro bot jugando su primera partida.
  • Código fuente visto en el vídeo:
#Con esta función contruimos nuestros mmodelo.Nuestra red neuronal
def build_model(input_size, output_size):
    model = Sequential()
    model.add(Dense(128, input_dim=input_size, activation='relu'))
    model.add(Dense(52, activation='relu'))
    model.add(Dense(output_size, activation='linear'))
    model.compile(loss='mse', optimizer=Adam())

    return model
#creamos la función que entrenará nuestro modelo
def train_model(training_data):
    X = np.array([i[0] for i in training_data]).reshape(-1, len(training_data[0][0]))
    y = np.array([i[1] for i in training_data]).reshape(-1, len(training_data[0][1]))
    model = build_model(input_size=len(X[0]), output_size=len(y[0]))
    
    model.fit(X, y, epochs=10)
    return model
trained_model = train_model(training_data)


scores = []#inicializamos puntuaciones y array de elecciones
choices = []
for each_game in range(1):#jugamos 100 partidas
    score = 0
    prev_obs = []
    for step_index in range(goal_steps):#Jugamos 500 pasos por partida
        
        env.render()
        if len(prev_obs)==0:
            action = random.randrange(0,2)#en el primer paso elegimos movimiento al azar
        else:
            #A partir del segundo paso conocemos el estado actual del juego.
            #Entonces, tomaremos esa observación y se la daremos a nuestro 
            #modelo para predecir qué acción debemos tomar. 
            action = np.argmax(trained_model.predict(prev_obs.reshape(-1, len(prev_obs)))[0])
        #guardamos elección
        choices.append(action)
        new_observation, reward, done, info = env.step(action)
        prev_obs = new_observation
        score+=reward
        if done:
            break

    env.reset()
    scores.append(score)

print(scores)
print('Average Score:',sum(scores)/len(scores))
print('choice 1:{}  choice 0:{}'.format(choices.count(1)/len(choices),choices.count(0)/len(choices)))

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...