MCPcopy Index your code
hub / github.com/OpenDriveLab/DriveAdapter / evaluate_policy

Method evaluate_policy

roach/utils/wandb_callback.py:139–192  ·  view source on GitHub ↗
(env, policy, video_path, min_eval_steps=3000)

Source from the content-addressed store, hash-verified

137
138 @staticmethod
139 def evaluate_policy(env, policy, video_path, min_eval_steps=3000):
140 policy = policy.eval()
141 t0 = time.time()
142 for i in range(env.num_envs):
143 env.set_attr('eval_mode', True, indices=i)
144 obs = env.reset()
145
146 list_render = []
147 ep_stat_buffer = []
148 ep_events = {}
149 for i in range(env.num_envs):
150 ep_events[f'venv_{i}'] = []
151
152 n_step = 0
153 n_timeout = 0
154 env_done = np.array([False]*env.num_envs)
155 # while n_step < min_eval_steps:
156 while n_step < min_eval_steps or not np.all(env_done):
157 actions, values, log_probs, mu, sigma, _ = policy.forward(obs, deterministic=True, clip_action=True)
158 obs, reward, done, info = env.step(actions)
159
160 for i in range(env.num_envs):
161 env.set_attr('action_value', values[i], indices=i)
162 env.set_attr('action_log_probs', log_probs[i], indices=i)
163 env.set_attr('action_mu', mu[i], indices=i)
164 env.set_attr('action_sigma', sigma[i], indices=i)
165
166 list_render.append(env.render(mode='rgb_array'))
167
168 n_step += 1
169 env_done |= done
170
171 for i in np.where(done)[0]:
172 ep_stat_buffer.append(info[i]['episode_stat'])
173 ep_events[f'venv_{i}'].append(info[i]['episode_event'])
174 n_timeout += int(info[i]['timeout'])
175
176 # conda install x264=='1!152.20180717' ffmpeg=4.0.2 -c conda-forge
177 encoder = ImageEncoder(video_path, list_render[0].shape, 30, 30)
178 for im in list_render:
179 encoder.capture_frame(im)
180 encoder.close()
181
182 avg_ep_stat = WandbCallback.get_avg_ep_stat(ep_stat_buffer, prefix='eval/')
183 avg_ep_stat['eval/eval_timeout'] = n_timeout
184
185 duration = time.time() - t0
186 avg_ep_stat['time/t_eval'] = duration
187 avg_ep_stat['time/fps_eval'] = n_step * env.num_envs / duration
188
189 for i in range(env.num_envs):
190 env.set_attr('eval_mode', False, indices=i)
191 obs = env.reset()
192 return avg_ep_stat, ep_events
193
194 @staticmethod
195 def get_avg_ep_stat(ep_stat_buffer, prefix=''):

Callers 1

_on_training_endMethod · 0.95

Calls 5

get_avg_ep_statMethod · 0.80
resetMethod · 0.45
forwardMethod · 0.45
stepMethod · 0.45
renderMethod · 0.45

Tested by

no test coverage detected