注意
转到末尾下载完整的示例代码。
日志记录入门¶
作者: Vincent Moens
注意
要在笔记本中运行本教程,请添加安装单元 开头包含:
!pip install tensordict !pip install torchrl
本系列的最后一章,在我们编排所有内容之前 training 脚本用于学习日志记录。
伐木¶
日志记录对于向外界报告您的结果以及
请检查您的算法是否正在正确学习。TorchRL 有几个
与自定义后端(如
wandb ()、
tensorboard () 或轻量级和
您可以使用的便携式 CSV 记录器 ()
几乎无处不在。
TensorBoardLogger
Logger 位于模块和各种类中
可以在 API 参考中找到。torchrl.record
我们试图使 logger API 尽可能相似,因为 底层后端的差异。虽然 logger 的执行将 大多数是可互换的,它们的实例化可能不同。
通常,构建 Logger 需要 至少一个实验名称,可能还有一个日志记录目录和其他 超参数。
from torchrl.record import CSVLogger
logger = CSVLogger(exp_name="my_exp")
一旦 Logger 被实例化,剩下唯一要做的就是调用
logging 方法!例如,在训练示例中的多个位置使用,以记录诸如
奖励、损失值或执行一段代码所经过的时间。log_scalar()
logger.log_scalar("my_scalar", 0.4)
录制视频¶
最后,它可以派上用场来录制模拟器的视频。一些 环境(例如,Atari 游戏)已经渲染为图像,而 其他 Cookie 要求您创建它们。幸运的是,在大多数常见情况下, 渲染和录制视频并不太困难。
首先,让我们看看如何创建输出图像的 Gym 环境
以及它的观察结果。接受两个关键字
为此:
- 将使 env 函数
编写一个包含与您的
observations 和
from_pixels=True
step
"pixels"
pixels_only=False
将指示您希望使用
要返回的观察结果。
from torchrl.envs import GymEnv
env = GymEnv("CartPole-v1", from_pixels=True, pixels_only=False)
print(env.rollout(max_steps=3))
from torchrl.envs import TransformedEnv
TensorDict(
fields={
action: Tensor(shape=torch.Size([3, 2]), device=cpu, dtype=torch.int64, is_shared=False),
done: Tensor(shape=torch.Size([3, 1]), device=cpu, dtype=torch.bool, is_shared=False),
next: TensorDict(
fields={
done: Tensor(shape=torch.Size([3, 1]), device=cpu, dtype=torch.bool, is_shared=False),
observation: Tensor(shape=torch.Size([3, 4]), device=cpu, dtype=torch.float32, is_shared=False),
pixels: Tensor(shape=torch.Size([3, 400, 600, 3]), device=cpu, dtype=torch.uint8, is_shared=False),
reward: Tensor(shape=torch.Size([3, 1]), device=cpu, dtype=torch.float32, is_shared=False),
terminated: Tensor(shape=torch.Size([3, 1]), device=cpu, dtype=torch.bool, is_shared=False),
truncated: Tensor(shape=torch.Size([3, 1]), device=cpu, dtype=torch.bool, is_shared=False)},
batch_size=torch.Size([3]),
device=None,
is_shared=False),
observation: Tensor(shape=torch.Size([3, 4]), device=cpu, dtype=torch.float32, is_shared=False),
pixels: Tensor(shape=torch.Size([3, 400, 600, 3]), device=cpu, dtype=torch.uint8, is_shared=False),
terminated: Tensor(shape=torch.Size([3, 1]), device=cpu, dtype=torch.bool, is_shared=False),
truncated: Tensor(shape=torch.Size([3, 1]), device=cpu, dtype=torch.bool, is_shared=False)},
batch_size=torch.Size([3]),
device=None,
is_shared=False)
现在,我们已经构建了一个环境,该环境可以使用其观察结果来渲染图像。 要录制视频,我们需要将该环境与录像机相结合 和 Logger(提供后端以保存视频的 Logger)。 这将发生在一个转变的环境中,就像我们在 第一个教程。
from torchrl.record import VideoRecorder
recorder = VideoRecorder(logger, tag="my_video")
record_env = TransformedEnv(env, recorder)
运行此环境时,所有条目都将保存在
本地缓冲区(即 RAM)并转储到视频点播中(以防止过多的
RAM 使用率,建议在适当的时候调用该方法!"pixels"
rollout = record_env.rollout(max_steps=3)
# Uncomment this line to save the video on disk:
# recorder.dump()
在这种特定情况下,可以在实例化时选择 CSVLogger 的
(如果您想自定义视频的录制方式,请查看我们的知识库。
这就是我们想在 Getting started tutorial 中介绍的全部内容。 现在,您应该已准备好使用 TorchRL 编写您的第一个训练循环了!
脚本总运行时间:(0 分 14.777 秒)
估计内存使用量:349 MB