Keras Reinforcement Learning: Как передать награду модели - PullRequest
0 голосов
/ 12 июня 2018
import numpy as np
import gym
from gym import wrappers # 追加

from keras.models import Sequential
from keras.layers import Dense, Activation, Flatten
from keras.optimizers import Adam

from rl.agents.dqn import DQNAgent
from rl.policy import BoltzmannQPolicy
from rl.memory import SequentialMemory

ENV_NAME = 'CartPole-v0'

# Get the environment and extract the number of actions.
env = gym.make(ENV_NAME)
env = wrappers.Monitor(env, './CartPole') # 追加
np.random.seed(123)
env.seed(123)
nb_actions = env.action_space.n

# Next, we build a very simple model.
model = Sequential()
model.add(Flatten(input_shape=(1,) + env.observation_space.shape))
model.add(Dense(16))
model.add(Activation('relu'))
model.add(Dense(16))
model.add(Activation('relu'))
model.add(Dense(16))
model.add(Activation('relu'))
model.add(Dense(nb_actions))
model.add(Activation('linear'))
print(model.summary())

# Finally, we configure and compile our agent. You can use every built-in Keras optimizer and
# even the metrics!
memory = SequentialMemory(limit=50000, window_length=1)
policy = BoltzmannQPolicy()
dqn = DQNAgent(model=model, nb_actions=nb_actions, memory=memory, nb_steps_warmup=10,
               target_model_update=1e-2, policy=policy)
dqn.compile(Adam(lr=1e-3), metrics=['mae'])

# Okay, now it's time to learn something! We visualize the training here for show, but this
# slows down training quite a lot. You can always safely abort the training prematurely using
# Ctrl + C.
dqn.fit(env, nb_steps=50000, visualize=True, verbose=2)

# After training is done, we save the final weights.
dqn.save_weights('dqn_{}_weights.h5f'.format(ENV_NAME), overwrite=True)

# Finally, evaluate our algorithm for 5 episodes.
dqn.test(env, nb_episodes=5, visualize=True)

Это код для проблемы с полюсом тележки.Я хочу отредактировать некоторые из них, чтобы сделать мои собственные.Однако, я не понимаю, какой код дает агенту состояние и вознаграждение.

Как вознаграждение и состояние предоставляются агенту?А как модель?

1 Ответ

0 голосов
/ 12 сентября 2018

Получение статуса и награды агента определяется как часть окружения. Вот так его карпола выглядит в своем классе, т.е. CartPoleEnv внутри gym.Клонируй репо в спортзал и ищи gym/envs/classic_control/cartpole.py.Проверьте шаг и сбросьте методы, здесь вы найдете свои ответы.За дополнительной информацией обращайтесь к этому сообщению stackoverflow .

...