pytorch基础知识整理(四) 模型
1,模型構(gòu)造模板
torch.nn.Module()是所有網(wǎng)絡模型的基類,所有網(wǎng)絡都需要繼承此類,模板如下:
import torch.nn as nn import torch.nn.functional as Fclass 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() 返回模型所有參數(shù)的迭代器。常用來作為optimizer的迭代器。
model.register_parameter(name, param) 向模型添加parameter。
model.register_buffer(name, tensor) 向模型添加buffer。
model.state_dict(), model.load_state_dict() 返回/加載 狀態(tài)字典。
model.train(), model.eval() 訓練/推理模式,僅影響模型中的dropout和BN層。
model.cpu(), model.cuda() 把模型中的所有parameters和buffers賦值到CPU/GPU中。
model.float(), model.half(), model.double() 轉(zhuǎn)換模型的所有parameters和buffers的類型。
model.zero_grad() 把模型所有parameters的梯度置0,和optimizer.zero_grad()完全等效。
注:可以用model.layer_name的方法得到子模型,如model.conv1.parameters()就得到了conv1的參數(shù)
總結(jié)
以上是生活随笔為你收集整理的pytorch基础知识整理(四) 模型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pytorch基础知识整理(三)模型保存
- 下一篇: pytorch基础知识整理(五) 优化器