文章目录
1.torch.nn.Parameter()
torch.nn.Parameter() 是 PyTorch 中的一个类,用于将张量包装成可训练的参数。
在神经网络中,我们需要定义可训练的参数,例如模型的权重和偏置。torch.nn.Parameter() 允许我们将张量包装成一个特殊的参数对象,该对象会被注册为模型的一部分,并且可以自动进行梯度计算和更新。
import torch
import torch.nn as nn
# 定义一个线性模型类
class LinearModel(nn.Module):
def __init__(self):
super(LinearModel, self).__init__()
# 创建一个可训练的参数
self.weights = nn.Parameter(torch.randn(3, 2))
self.bias = nn.Parameter(torch.zeros(3))
def forward(self, x):
# 使用参数进行线性变换
return torch.matmul(x, self.weights) + self.bias
# 创建一个线性模型对象
model = LinearModel()
# 获取模型的参数
parameters = list(model.parameters())
print(parameters)
print("==============")
print(model.parameters)
[Parameter containing:
tensor([[-1.0570, -0.7752],
[-1.1010, 0.0697],
[ 1.3795, 0.5130]], requires_grad=True), Parameter containing:
tensor([0., 0., 0.], requires_grad=True)]
==============
<bound method Module.parameters of LinearModel()>
2.torch.nn.Module()
torch.nn.Module() 是 PyTorch 中的一个基类,用于定义神经网络模型的基本结构。torch.nn.Module 是一个可扩展的类,用于构建神经网络模型。当我们定义自己的神经网络模型时,通常会继承 torch.nn.Module 类,并重写其中的方法,以定义模型的结构和前向传播逻辑。
代码如下(示例):
import torch
import torch.nn as nn
# 定义一个简单的全连接神经网络模型
class SimpleNet(nn.Module):
def __init__(self)<