# create work_dir
mmcv.mkdir_or_exist(osp.abspath(cfg.work_dir))
print(cfg.work_dir)
print(osp.abspath(cfg.work_dir))
# dump config
cfg.dump(osp.join(cfg.work_dir, osp.basename(args.config)))
print(osp.basename(args.config))
print(osp.join(cfg.work_dir, osp.basename(args.config)))
./work_dirs/stgcn++/stgcn++_ntu60_xsub_hrnet/j
/root/pyskl/work_dirs/stgcn++/stgcn++_ntu60_xsub_hrnet/j
j.py
./work_dirs/stgcn++/stgcn++_ntu60_xsub_hrnet/j/j.py
mmcv.mkdir_or_exist(osp.abspath(cfg.work_dir))
这行代码的作用是:
-
获取
cfg.work_dir
的绝对路径:- 使用
osp.abspath()
函数获取绝对路径,这样可以确保路径正确,并且具有跨平台兼容性。
- 使用
-
创建目录或判断目录是否存在:
mmcv.mkdir_or_exist()
函数会检查指定路径是否存在。- 如果路径不存在,它会自动创建该目录。
- 如果路径已经存在,它不会做任何操作。
具体的行为如下:
-
如果
cfg.work_dir
指定的目录不存在:mmcv.mkdir_or_exist()
会创建该目录及其所有必要的父目录。- 创建目录后,
cfg.work_dir
指定的路径就存在了。
-
如果
cfg.work_dir
指定的目录已经存在:mmcv.mkdir_or_exist()
不会做任何操作,因为目录已经存在了。
总之,这行代码的作用是确保 cfg.work_dir
指定的目录存在,如果不存在就自动创建。这是一种常见的做法,可以确保后续的文件操作(如保存配置文件)能够正确执行。
cfg.dump(osp.join(cfg.work_dir, osp.basename(args.config)))是保存更新之后的配置文件到指定路径吗?
是的
这行代码的作用是将更新后的配置文件 cfg
保存到指定路径。具体来说:
-
osp.basename(args.config)
获取配置文件名称,不包含路径部分。- 比如如果
args.config
是'configs/my_config.py'
,那么osp.basename(args.config)
就是'my_config.py'
。
- 比如如果
-
osp.join(cfg.work_dir, osp.basename(args.config))
拼接出配置文件的完整保存路径。- 使用
cfg.work_dir
作为保存目录,将配置文件名称拼接在其后。 - 比如如果
cfg.work_dir
是'./work_dir'
,那么最终的保存路径就是'./work_dir/my_config.py'
。
- 使用
-
cfg.dump(osp.join(cfg.work_dir, osp.basename(args.config)))
将更新后的cfg
配置对象保存到这个路径。cfg.dump()
函数会将配置对象序列化为文件格式(通常是 YAML 或 JSON)并写入文件。
总之,这行代码的作用是将更新后的配置文件 cfg
保存到 cfg.work_dir
目录下,文件名与原始配置文件名称相同。这样做可以在后续使用或调试时方便查看当前使用的配置。