You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Are you taking pull requests for extending some of the classes with other environments? I really like this framework and have been getting it to work with habit-api https://github.com/facebookresearch/habitat-api (I had tried with another but it was too difficult) and the sim.train I don't think works as is, I've written my own train() loop and it seems like it works but there are a bunch of nuances with habitat-api it seems (like you can't have multiple instances it seems due to an opengl thing? Im still not sure as trying to understand both frameworks and habitat-api/habitat-sim is pretty extensive) What I have right now is something like:
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Conv2D, MaxPooling2D, Dropout, Flatten
import huskarl as hk
import habitat
class SimpleRLEnv(habitat.RLEnv):
def get_reward_range(self):
return [-1, 1]
def get_reward(self, observations):
return 0
def get_done(self, observations):
return self.habitat_env.episode_over
def get_info(self, observations):
return self.habitat_env.get_metrics()
config = habitat.get_config(config_paths="configs/tasks/pointnav.yaml")
create_env = lambda: SimpleRLEnv(config=config).unwrapped
dummy_env = create_env()
obs = dummy_env.observation_space.sample()
input_shape = obs["rgb"].shape
action_space_n = dummy_env.action_space.n
dummy_env.close()
model = Sequential([
Conv2D(16, kernel_size=(3, 3), activation='relu', input_shape=input_shape),
Conv2D(16, (3, 3), activation='relu'),
MaxPooling2D(pool_size=(2, 2)),
Dropout(0.25),
Flatten(),
Dense(16, activation='relu')
])
agent = hk.agent.DQN(model, actions=action_space_n, nsteps=2)
# These are what would need to work with habitat-api i believe
# sim = hk.Simulation(create_env, agent)
# sim.train(max_steps=30)
# sim.test(max_steps=10)
instances = 1
max_steps = 50
episode_reward_sequences = []
episode_step_sequences = []
episode_rewards = 0
envs = create_env()
states = envs.reset()
for step in range(max_steps):
# Most of this is copied from simulation._sp_train()
action = agent.act(states["rgb"])
next_state, reward, done, other_ = envs.step(action)
agent.push(hk.memory.Transition(states["rgb"], action, reward, None if done else next_state["rgb"]))
episode_rewards += reward
if done:
episode_reward_sequences.append(episode_rewards)
episode_step_sequences.append(step)
episode_rewards = 0
states = envs.reset()
else:
states = next_state
if step % 5 == 0: print(f"step is: {step} and pointgoal is: {states['pointgoal']}")
agent.train(step)
Also I think I can add PPO to the agents but wasn't working fully yet.
The text was updated successfully, but these errors were encountered:
Are you taking pull requests for extending some of the classes with other environments? I really like this framework and have been getting it to work with habit-api https://github.com/facebookresearch/habitat-api (I had tried with another but it was too difficult) and the sim.train I don't think works as is, I've written my own train() loop and it seems like it works but there are a bunch of nuances with habitat-api it seems (like you can't have multiple instances it seems due to an opengl thing? Im still not sure as trying to understand both frameworks and habitat-api/habitat-sim is pretty extensive) What I have right now is something like:
Also I think I can add PPO to the agents but wasn't working fully yet.
The text was updated successfully, but these errors were encountered: