@@ -143,6 +143,7 @@ Stable Baselines provides you with a set of common callbacks for:
143143- evaluating the model periodically and saving the best one (:ref: `EvalCallback `)
144144- chaining callbacks (:ref: `CallbackList `)
145145- triggering callback on events (:ref: `EventCallback `, :ref: `EveryNTimesteps `)
146+ - logging data every N timesteps (:ref: `LogEveryNTimesteps `)
146147- stopping the training early based on a reward threshold (:ref: `StopTrainingOnRewardThreshold <StopTrainingCallback >`)
147148
148149
@@ -313,7 +314,7 @@ An :ref:`EventCallback` that will trigger its child callback every ``n_steps`` t
313314
314315.. note ::
315316
316- Because of the way ``PPO1 `` and `` TRPO `` work (they rely on MPI) , ``n_steps `` is a lower bound between two events.
317+ Because of the way ``VecEnv `` work, ``n_steps `` is a lower bound between two events when using multiple environments .
317318
318319
319320.. code-block :: python
@@ -330,7 +331,30 @@ An :ref:`EventCallback` that will trigger its child callback every ``n_steps`` t
330331
331332 model = PPO(" MlpPolicy" , " Pendulum-v1" , verbose = 1 )
332333
333- model.learn(int (2e4 ), callback = event_callback)
334+ model.learn(20_000 , callback = event_callback)
335+
336+ .. _LogEveryNTimesteps :
337+
338+ LogEveryNTimesteps
339+ ^^^^^^^^^^^^^^^^^^
340+
341+ A callback derived from :ref: `EveryNTimesteps ` that will dump the logged data every ``n_steps `` timesteps.
342+
343+
344+ .. code-block :: python
345+
346+ import gymnasium as gym
347+
348+ from stable_baselines3 import PPO
349+ from stable_baselines3.common.callbacks import LogEveryNTimesteps
350+
351+ event_callback = LogEveryNTimesteps(n_steps = 1_000 )
352+
353+ model = PPO(" MlpPolicy" , " Pendulum-v1" , verbose = 1 )
354+
355+ # Disable auto-logging by passing `log_interval=None`
356+ model.learn(10_000 , callback = event_callback, log_interval = None )
357+
334358
335359
336360 .. _StopTrainingOnMaxEpisodes :
0 commit comments