pytorch 基础笔记

基础的 Tensor 操作

  1. 矩阵与向量的乘法
    torch.mul()是矩阵的点乘,即对应的位相乘,要求shape一样, 返回的还是个矩阵
    torch.mm() 是矩阵正常的矩阵相乘,(a, b)* ( b, c ) = ( a, c )
    torch.dot()类似于mul(),它是向量(即只能是一维的张量)的对应位相乘再求和,返回一个tensor数值
    torch.mv() 是矩阵和向量相乘,类似于torch.mm() # 第一个参数是矩阵,第二个参数只能是一维向量
    • mv, 我的理解: m,是matrix, v 是 vector

保存模型, 加载模型,state_dict()

  1. 保存模型 torch.save(model.state_dict(), “my_model.pth”)
  2. 加载自己的模型
    model = myModel().to(device) #
    model.load_state_dict(torch.load(“model.pth”))
  3. 加载 预定义的模型 vgg16
    import torchvision.models as models
    model = models.vgg16(weights=‘IMAGENET1K_V1’)
  4. 也可以把 模型的 class 架构和 模型参数都进行保存和加载
    torch.save(model, ‘model.pth’)
    model = torch.load(‘model.pth’)

grad 使用的问题

  1. optimizer.zero_grad()
    • 清除参数的梯度,语法上如果设置为None, 那么容易报错。
    • 此时处于一个轮次,一个阶段的开始,如果前面有梯度,那么就清除。如果没有, 那么初始化为0
    • 每个 batch, 也需要清除之前的梯度
    • 降低对硬件的压力,减少显存的使用。
  2. with torch.set_grad_enabled(True) 上下文管理器,设置是否计算更新梯度。
  3. with torch.no_grad() 关闭梯度计算, 一般用于 eval 模型评估阶段

torch 函数以及用法

  • pytorch 中, model.eval() 和 model.train() 的区别
    • 仅仅是设置模式,set mode,
    • 有些层 Dropout, BatchNorm 在不同模式下,表现不同。
  • view() 就是 reshape(), x.view(-1) 就是展平
  • optimizer.step() 更新所有参数
  • loss.backward() 反向传播计算梯度
  • loss = cost(outputs, y_train) 计算当前损失
  • outputs=model(inputs) 前向传播计算预测值
  • scheduler.step()
    • 调整学习率 lr, 通常是每个 epoch 调整一次。
    • 而且是在 optimizer.step() 之后才使用,否则会改变 optimizer 中的参数。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值