2.26学习报错

一、gpu切换到cpu来训练

要在CPU上训练模型,以下是一些可能需要修改的地方:

1. 模型加载到CPU:(train.py)

2. 数据加载到CPU:

在使用DataLoader时,通常不需要特别修改,因为它会自动处理数据加载到当前设备(CPU或GPU)。

1.修该train文件添加设备1:

2.确保你将 device 作为参数传递给 train_one_epoch 函数(以及任何其他需要知道运行设备的函数)

在 model.py 中修改 train_one_epoch 函数的定义,,添加device

最后,在 model.py 中的 train_one_epoch 函数里,使用 .to(device) 替换 .cuda():

3. 检查点和模型权重加载:

当从检查点加载模型状态字典或权重时,确保使用.cpu()。例如,如果有代码加载预训练权重到模型,确保它们被加载到CPU上,如下所示:

​​        checkpoint = torch.load(resume_model, map_location=torch.device('cpu'))
        model.load_state_dict(checkpoint['model_state_dict'])
4. 移除或修改CUDA相关的代码:

如果代码中有特定于CUDA的操作(如torch.cuda.empty_cache()),在CPU模式下注释掉

5. 环境变量设置:

移除或注释掉设置CUDA_VISIBLE_DEVICES的代码行,因为在使用CPU时不需要。

二、__init__.py的作用:

__init__.py 文件是 Python 包的一个特殊文件,它的存在告诉 Python 解释器这个目录应该被视为一个包,而不仅仅是一个普通的目录。这个文件可以为空,也可以包含 Python 代码,用于初始化包的状态。在你的情况下,datasets 包含 __init__.py 文件.和dataset.py 的目录。这意味着你可以在其他 Python 文件中使用dataset文件中的某类:from datasets.dataset import ....(类名),文件结构:

my_project/
    datasets/
        __init__.py
        dataset.py
    train.py

三、路径字符串的拼接问题

os.path.join()与os.listdir()使用的区别:

1.train.py

2.dataset.py

两种方法,都可以学习,看哪种方便

四、使用pdb来debug

import pdb
pdb.set_trace()
print("打印的a", a)

  • 16
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值