pathlib学习(二)

1、删除文件,判断路径是否为文件或文件夹

# 删除文件夹.rmdir(),删除文件夹,文件夹必须存在,并且必须为空,否则抛出异常

path = basepath / "test/a/b/c"
path.rmdir()


# 判断是否是文件is_file()或文件夹is_dir()
test_path = basepath / "test"
print(test_path.is_dir)
print(test_path.is_file)

2、遍历文件文件夹,查找指定类型文件

# 遍历文件夹.iterdir(),iterdir()是一个生成器,只有在迭代的时候才会输出(使用for循环循环输出)

# 最后输出是由路径对象组成的一个列表

path = basepath.parent
print(path.iterdir())                            # 输出结果为一个生成器

files = list(path.iterdir())

# 获得文件夹下的所有文件
for p in path.iterdir():
    print(p)


# 获得指定文件夹下的文件,给定文件夹路径

path = Path("/user/a10.11")
for p in path.iterdir():
    print(p)


# 查找指定后缀名的文件,查询所有的参数*,查询指定某个后缀名*.py,以后一字符串开头python*

path = basepath.parent
# 输出所有文件
for filename in path.glob('*'):
    print(filename)


# 遍历以py结尾的文件
for filename in path.glob('*.py'):
    print(filename)


# 遍历以python开头的文件
for filename in path.glob('python*'):
    print(filename)

3、获取文件或文件夹的详细信息

path = basepath / "path.py"
print(path.stat())                   # 获得一个os对象


# stat查询属性
print("文件大小", path.stat().st_size)
print("创建时间", path.stat().st_ctime)
print("最近一次修改时间", path.stat().st_mtime)

### 如何在深度学习训练中实现断点续训 #### 一、理解断点续训的概念及其重要性 断点续训是指当训练过程因意外中断(如硬件故障或手动停止),能够在后续恢复到最近一次保存的状态并继续训练的过程。这不仅提高了资源利用率,还保障了实验的连续性和稳定性[^1]。 #### 、断点续训与加载预训练权重的区别 两者的主要差异体现在优化器状态上:简单加载预训练模型仅会初始化网络参数;而完整的断点续训除了保留模型架构外,还会同步保存当前迭代次数、随机数种子以及最重要的优化器内部变量(比如动量项)。这些额外的信息对于维持原有训练轨迹至关重要,从而确保即使中途暂停也能无缝衔接之前的进度。 #### 三、具体实施策略 为了有效执行断点续训,在设计阶段就需要考虑以下几个方面: ##### 3.1 定期保存检查点文件 通过设置周期性的回调函数来自动记录整个训练环境的状态至磁盘,通常包括但不限于: - 当前epoch/step计数值; - 所有层的权值矩阵; - Optimizer对象中的历史梯度累积等私有属性。 ```python import torch from pathlib import Path def save_checkpoint(state, filename='checkpoint.pth.tar'): """Save checkpoint.""" path = Path(filename) path.parent.mkdir(parents=True, exist_ok=True) torch.save(state, str(path)) ``` ##### 3.2 加载已有检查点数据 读取之前存储下来的快照,并将其应用于新的Session实例之中。注意要保证新旧版本间的兼容性,特别是涉及到不同设备间迁移的情况时更需谨慎处理。 ```python device = 'cuda' if torch.cuda.is_available() else 'cpu' if Path('checkpoint.pth.tar').exists(): # Load checkpoint. print('==> Resuming from checkpoint..') checkpoint = torch.load('checkpoint.pth.tar', map_location=device) model.load_state_dict(checkpoint['model']) optimizer.load_state_dict(checkpoint['optimizer']) start_epoch = checkpoint['epoch'] + 1 else: start_epoch = 0 ``` ##### 3.3 处理潜在不匹配问题 有时可能会遇到由于修改配置导致尺寸不符等问题,这时应该仔细对比前后两次设定是否存在差异,并针对性调整直至者完全吻合为止[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

。七十二。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值