当前位置:首页 >> 编程语言 >> 【PyTorch】(三)模型的创建、参数初始化、保存和加载,索爱m600i

【PyTorch】(三)模型的创建、参数初始化、保存和加载,索爱m600i

0evadmin 编程语言 1
文件名:【PyTorch】(三)模型的创建、参数初始化、保存和加载,索爱m600i 【PyTorch】(三)模型的创建、参数初始化、保存和加载

文章目录 1. 模型的创建1.1. 模型组件1.1.1. 网络层1.1.2. 激活函数1.1.3. 函数包1.1.4. 容器 1.2. 创建方法1.1.1. 通过使用模型组件1.1.2. 通过继承nn.Module类 1.3. 将模型转移到GPU 2. 模型参数初始化3. 模型的保存与加载3.1. 只保存参数3.2. 保存模型和参数

1. 模型的创建 1.1. 模型组件 1.1.1. 网络层 1.1.2. 激活函数 1.1.3. 函数包 1.1.4. 容器 1.2. 创建方法 1.1.1. 通过使用模型组件

可以直接使用模型组件快速创建模型。

import torch.nn as nnmodel =nn.Linear(10, 10)print(model)

输出结果:

Linear(in_features=10, out_features=10, bias=True) 1.1.2. 通过继承nn.Module类

在__init__方法中使用模型组件定义模型各层。必须重写forward方法实现前向传播。

import torch.nn as nnclass Model(nn.Module):def __init__(self):super().__init__()self.layer1 = nn.Linear(10, 10)self.layer2 = nn.Linear(10, 10)self.layer3 = nn.Sequential(nn.Linear(10, 10),nn.ReLU(),nn.Linear(10, 10))def forward(self, x):x = self.layer1(x)x = self.layer2(x)x = self.layer3(x)return xmodel = Model()print(model)

输出结果:

Model((layer1): Linear(in_features=10, out_features=10, bias=True)(layer2): Linear(in_features=10, out_features=10, bias=True)(layer3): Sequential((0): Linear(in_features=10, out_features=10, bias=True)(1): ReLU()(2): Linear(in_features=10, out_features=10, bias=True))) 1.3. 将模型转移到GPU

方法与将数据转移到GPU类似,都有两种方法:

model.to(device)mode.cuda() import torchimport torch.nn as nn# 创建模型实例model = nn.Sequential(nn.Linear(10, 10),nn.ReLU(),nn.Linear(10, 10))# 将模型移动到GPUdevice = torch.device("cuda" if torch.cuda.is_available() else "cpu")model = model.to(device)# 也可以model = model.cuda() 2. 模型参数初始化

torch.nn.init提供了许多初始化参数的函数:

函数名作用参数uniform_从均匀分布 U ( a , b ) U(a,b) U(a,b)中生成值,填充输入的张量tensor, a = 0, b = 1normal_从正态分布 N ( m e a n , s t d 2 ) N(mean, std^2) N(mean,std2)中生成值,填充输入的张量tensor, mean = 0, std = 1constant_用常数 v a l val val,填充输入的张量tensor, valeye_用单位矩阵,填充二维输入张量tensor(二维)dirac_用狄拉克函数,填充{3, 4, 5}维输入张量tensor({3, 4, 5}维), groups = 1xavier_uniform_从xavier均匀分布中生成值,填充输入张量tensor, gain = 1xavier_normal_从xavier正态分布中生成值,填充输入张量tensor, gain = 1kaiming_uniform_从kaiming均匀分布中生成值,填充输入张量tensor, a = 0, mode = ‘fan_in’, nonlinearity = ‘leaky_relu’kaiming_normal_从kaiming正态分布中生成值,填充输入张量tensor, a = 0, mode = ‘fan_in’, nonlinearity = ‘leaky_relu’orthogonal_用一个(半)正交矩阵,填充输入张量tensor, gain = 1sparse_用非零元素服从 N ( 0 , s t d 2 ) N(0, std^2) N(0,std2)的稀疏矩阵,填充二维输入张量tensor, sparsity, std = 0.01 3. 模型的保存与加载

模型保存和加载使用的python内置的pickle模块。

3.1. 只保存参数 import torchimport torch.nn as nn# 创建模型实例model1 = nn.Sequential(nn.Linear(10, 10),nn.ReLU(),nn.Linear(10, 10))# 保存和加载参数torch.save(model1.state_dict(), '../model/model_params.pkl')model1.load_state_dict(torch.load('../model/model_params.pkl')) 3.2. 保存模型和参数 import torchimport torch.nn as nn# 创建模型实例model1 = nn.Sequential(nn.Linear(10, 10),nn.ReLU(),nn.Linear(10, 10))# 保存和加载模型和参数torch.save(model1, '../model/model.pt')model2 = torch.load('../model/model.pt')print(model2)
协助本站SEO优化一下,谢谢!
关键词不能为空
同类推荐
«    2025年12月    »
1234567
891011121314
15161718192021
22232425262728
293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接