pytorch基础知识整理(四) 模型

1,模型构造模板

torch.nn.Module()是所有网络模型的基类,所有网络都需要继承此类,模板如下:

import torch.nn as nn
import torch.nn.functional as F

class Model(nn.Module):
    def __init__(self):
        super().__init__() #'表示继承父类的__init__()方法'
        self.conv1 = nn.Conv2d(1, 20, 5)
        self.conv2 = nn.Conv2d(20, 20, 5)

    def forward(self, x):
       x = F.relu(self.conv1(x))
       return F.relu(self.conv2(x))

2,torch.nn.Module()的常用方法

model.modules()model.children() 返回模型所有模块/子模块的迭代器。
model.named_modules(), model.named_children() 返回模型所有模块/子模块的名字和模块本身的迭代器。
model.parameters() 返回模型所有参数的迭代器。常用来作为optimizer的迭代器。
model.register_parameter(name, param) 向模型添加parameter。
model.register_buffer(name, tensor) 向模型添加buffer。
model.state_dict(), model.load_state_dict() 返回/加载 状态字典。
model.train(), model.eval() 训练/推理模式,仅影响模型中的dropout和BN层。
model.cpu(), model.cuda() 把模型中的所有parameters和buffers赋值到CPU/GPU中。
model.float(), model.half(), model.double() 转换模型的所有parameters和buffers的类型。
model.zero_grad() 把模型所有parameters的梯度置0,和optimizer.zero_grad()完全等效。
注:可以用model.layer_name的方法得到子模型,如model.conv1.parameters()就得到了conv1的参数

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值