Используя Open Gym и Tensorflow, Keras
Вариант использования
- Используйте обучение с подкреплением и обучите глубокую модель RL
- Используйте Open Gym и Tensorflow
- Используйте Керас
- Установить зависимости
- Оригинальный учебник воспроизведен из — https://github.com/nicknochnack/TensorflowKeras-ReinforcementLearning/blob/master/Deep%20Reinforcement%20Learning.ipynb
- В этом руководстве показаны вышеперечисленные работы в службе машинного обучения Azure.
Установить зависимости
!pip install --upgrade tensorflow !pip install gym !pip install keras !pip install keras-rl2
!sudo apt-get update !sudo apt-get install -y xvfb ffmpeg !pip install 'imageio==2.4.0' !pip install pyvirtualdisplay !sudo apt-get install -y python-opengl xvfb
- Когда я тестировал версию tensorflow, она была 2.6.0.
- Виртуальный дисплей необходим для открытого тренажерного зала для отображения изображений или графики.
- Идея состоит в том, чтобы показать, что мы можем запускать весь открытый исходный код в лаборатории jupyter в рамках машинного обучения Azure.
Код
- Показать версию тензорного потока
import tensorflow as tf;
print(tf.__version__)
- теперь импортирует
import gym import random
import os import io import base64 from IPython.display import display, HTML
- настроить дисплей
from pyvirtualdisplay import Display display = Display(visible=0, size=(800, 600)) display.start()
import matplotlib.pyplot as plt %matplotlib inline from IPython import display
- Теперь установите среду открытого спортзала
env = gym.make('CartPole-v0') states = env.observation_space.shape[0] actions = env.action_space.n
actions
- Проверьте, работает ли рендеринг
import gym
env = gym.make('CartPole-v0')
env.reset()
env.render()
- Создать выпуски
episodes = 10
for episode in range(1, episodes+1):
state = env.reset()
done = False
score = 0
while not done:
env.render()
action = random.choice([0,1])
n_state, reward, done, info = env.step(action)
score+=reward
print('Episode:{} Score:{}'.format(episode, score))
- Теперь время построить модель
import numpy as np
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Flatten
from tensorflow.keras.optimizers import Adam
- Определить модель
def build_model(states, actions):
model = Sequential()
model.add(Flatten(input_shape=(1,states)))
model.add(Dense(24, activation='relu'))
model.add(Dense(24, activation='relu'))
model.add(Dense(actions, activation='linear'))
return model
- Построить модель
model = build_model(states, actions)
- Показать модель
model.summary()
- Теперь глубокое обучение с подкреплением включает
from rl.agents import DQNAgent
from rl.policy import BoltzmannQPolicy
from rl.memory import SequentialMemory
- Определить агента
def build_agent(model, actions):
policy = BoltzmannQPolicy()
memory = SequentialMemory(limit=50000, window_length=1)
dqn = DQNAgent(model=model, memory=memory, policy=policy,
nb_actions=actions, nb_steps_warmup=10, target_model_update=1e-2)
return dqn
- Построить и запустить модель
dqn = build_agent(model, actions)
dqn.compile(Adam(lr=1e-3), metrics=['mae'])
dqn.fit(env, nb_steps=50000, visualize=False, verbose=1)
- Тест
scores = dqn.test(env, nb_episodes=100, visualize=False)
print(np.mean(scores.history['episode_reward']))
- тест
_ = dqn.test(env, nb_episodes=15, visualize=True)
- Сохранить модель для оценки
dqn.save_weights('dqn_weights.h5f', overwrite=True)
- удалить все
del model
del dqn
del env
- Теперь загрузите модель
- Тестирование логических выводов с новым набором данных
- Настройте среду и загрузите сохраненную модель
env = gym.make('CartPole-v0')
actions = env.action_space.n
states = env.observation_space.shape[0]
model = build_model(states, actions)
dqn = build_agent(model, actions)
dqn.compile(Adam(lr=1e-3), metrics=['mae'])
- загрузить веса
dqn.load_weights('dqn_weights.h5f')
- Запустите подсчет очков
_ = dqn.test(env, nb_episodes=5, visualize=True)
Первоначально опубликовано на https://github.com.