first-model / Loader.py
Energetic26's picture
version5
22b374f
Raw History Blame Contribute Delete
1.98 kB
import os
from stable_baselines3 import PPO
import gym
class MegaLoader:
def __init__(self, env_name, algo, directory):
self.env_name = env_name
self.env = gym.make(self.env_name)
self.env.reset()
self.algorithm = algo
self.directory = directory
def model_selector(self, all_models_dir):
# print( os.listdir(all_models_dir)[-1])
return os.listdir(all_models_dir)[-1]
# return whole file name properly, with date and all
pass
def load(self, execution_number, no_of_episodes):
# Input :-
# 1. execution_number -
# 2. no_of_episodes -
# 3.
# Returns :-
# Dictionary with the following items
# 1. total_return [int]
# 2. return_per_episode [list]
# 3.
# 3.
# 3.
# 3.
total_return = 0
return_per_episode = []
info_per_episode = []
all_models_dir = f"model/{self.directory}/{execution_number}"
model_no = self.model_selector(all_models_dir)
model_dir = f"{all_models_dir}/{model_no}"
model = PPO.load(model_dir, env=self.env)
for ep in range(no_of_episodes):
obs = self.env.reset()
done = False
info = ""
episode_return = 0
while not done:
action, _states = model.predict(obs)
obs, rewards, done, info = self.env.step(action)
episode_return += rewards
# self.env.render()
return_per_episode.append(episode_return)
total_return += episode_return
info_per_episode.append(info)
model_test_info = {
"total_return": total_return,
"return_per_episode": return_per_episode,
"info_per_episode": info_per_episode,
}
return model_test_info