讯代理网站,wordpress自定义后台菜单,wordpress 分类 如何修改,如何做网站编辑 ?]技术文章目录 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.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_features10, out_features10, biasTrue)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_features10, out_features10, biasTrue)(layer2): Linear(in_features10, out_features10, biasTrue)(layer3): Sequential((0): Linear(in_features10, out_features10, biasTrue)(1): ReLU()(2): Linear(in_features10, out_features10, biasTrue))
)1.3. 将模型转移到GPU
方法与将数据转移到GPU类似都有两种方法
model.to(device)mode.cuda()
import torch
import torch.nn as nn# 创建模型实例
model nn.Sequential(nn.Linear(10, 10),nn.ReLU(),nn.Linear(10, 10)
)# 将模型移动到GPU
device 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 torch
import 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 torch
import 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)