pytorch深度学习代码框架常用方法(持续更新中)

在学习一些开源代码的过程中把自己之前不知道的东西都记下来,也是对自己的查漏补缺

argparse.ArgumentParser()

argparse是python用于解析命令行参数的标准模块,详细信息可以参考https://docs.python.org/zh-cn/3/library/argparse.html#argumentparser-objects

1、import argparse

2、parser = argparse.ArgumentParser();创建一个解析对象

3、parser.add_argument();向该对象中添加要关注的命令行参数和选项,每一个add_argument方法对应一个要关注的参数或选项;

部分参数解释:

metavar:

当 ArgumentParser 生成帮助消息时,它需要用某种方式来引用每个预期的参数。 默认情况下,ArgumentParser 对象使用 dest 值作为每个对象的 "name"。 默认情况下,对于位置参数动dest  值将被直接使用,而对于可选参数动作, dest 值将被转为大写形式。 因此,一个位置参数 dest='bar' 的引用形式将为 bar。 一个带有单独命令行参数的可选参数 --foo 的引用形式将为 FOO.可以使用 metavar 来指定一个替代名称.

choices:

某些命令行参数应当从一组受限的值中选择。 这可以通过将一个序列对象作为 choices 关键字参数传给 add_argument() 来处理。 当执行命令行解析时,参数值将被检查,如果参数不是可接受的值之一就将显示错误消息:

4、parser.parse_args();调用parse_args()进行解析,解析成功之后即可使用

字符串函数-strip()

 用于移除字符串头尾指定的字符(默认为空格)或字符序列。注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。

使用GPU进行训练的几种方法

  1. os.environ['CUDA_VISIBLE_DEVICES']:使用指定的GPU及GPU显存,是设定程序对哪几张显卡可视。需要放在.py文件的开头。
  2. 使用model.to(device):
    import torch.nn as nn
    import torch.optim as optim
    
    # 定义模型
    class Net(nn.Module):
        def __init__(self):
            super(Net, self).__init__()
            # ...
        
        def forward(self, x):
            # ...
            
    model = Net()
    
    # 将模型和数据加载到GPU中
    device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
    model.to(device)
    data = data.to(device)
    
    # 定义优化器和损失函数
    criterion = nn.CrossEntropyLoss()
    optimizer = optim.SGD(model.parameters(), lr=0.001)

  3. 使用torch.cuda.set_device("cuda:0"):
    import torch
     
    torch.cuda.set_device("cuda:0")
     
    model.cuda()
     
    data = data.cuda()

torch.optim.lr_scheduler

用于在训练过程中修改学习率(learning_rate). Example:

optimizer = optim.SGD(model.parameters(), lr=0.01, momentum=0.9)
scheduler = ExponentialLR(optimizer, gamma=0.9)

for epoch in range(20):
    for input, target in dataset:
        optimizer.zero_grad()
        output = model(input)
        loss = loss_fn(output, target)
        loss.backward()
        optimizer.step()
    scheduler.step()

CLASS torch.optim.lr_scheduler.MultiStepLR(optimizermilestonesgamma=0.1

        last_epoch=-1verbose=False)

Decays the learning rate of each parameter group by gamma once the number of epoch reaches one of the milestones. Notice that such decay can happen simultaneously with other changes to the learning rate from outside this scheduler. When last_epoch=-1, sets initial lr as lr.

nn.Parameter()

把普通的tensor转换为可学习的tensor

super()和 __ init __()

super(FasterRCNN, self).__init__(backbone, rpn, roi_heads, transform)

super()用来调用父类(基类)的方法,__init__()是类的构造方法,
super().__init__() 就是调用父类的init方法, 同样可以使用super()去调用父类的其他方法

train_iter = iter(train_loader),data, _ = next(train_iter)

iter() 函数用来生成迭代器,即通过iter()函数获取这些可迭代对象的迭代器实际上就是调⽤了可迭代对象的__iter__⽅法

next()得到迭代对象的值,并且将迭代对象指向下一个值

  • 15
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值