nn.Parameter()

本文通过实例展示了如何使用PyTorch的nn.Linear和nn.Parameter创建全连接层。nn.Linear是预定义模块,包含了权重和偏置;而nn.Parameter允许自定义权重和偏置,它们都会自动添加到模型的参数列表中。
摘要由CSDN通过智能技术生成

class torch.nn.Parameter()

Parameter是Variable的子类,当Parameter赋值给Module属性的时候,他会自动被添加到Module的参数列表中。


示例:分别使用nn.Linear和nn.Parameter实现下图所示的全连接层。
在这里插入图片描述

1、通过nn.Linear实现

# 定义模型结构
class Model(nn.Module):
    def __init__(self):
        super(Model, self).__init__()
        # dense_1
        self.dense_1 = nn.Linear(5, 4, bias=True)
        # dense_2
        self.dense_2 = nn.Linear(4, 1, bias=True)
                
    def forward(self, input_data):
        out = torch.tanh(self.dense_1(input_data))
        out = torch.sigmoid(self.dense_2(out))
        return out
model = Model()

# 查看模型参数
for name, param in model.named_parameters():
    print(name)
    print(type(param.data))
    print(param.shape)

# 输出
dense_1.weight
<class 'torch.Tensor'>
torch.Size([4, 5])
dense_1.bias
<class 'torch.Tensor'>
torch.Size([4])

dense_2.weight
<class 'torch.Tensor'>
torch.Size([1, 4])
dense_2.bias
<class 'torch.Tensor'>
torch.Size([1])

2、通过nn.Parameter实现

# 定义模型结构
class Model(nn.Module):
    def __init__(self):
        super(Model, self).__init__()      
        # dense_1  
        self.w_1 = nn.Parameter(torch.randn(5, 4))
        self.b_1 = nn.Parameter(torch.randn(4))
        # dense_2
        self.w_2 = nn.Parameter(torch.randn(4, 1))
        self.b_2 = nn.Parameter(torch.randn(1))
    def forward(self, input_data):
        out = torch.tanh(torch.mm(input_data, self.w_1) + self.b_1)
        out = torch.sigmoid(torch.mm(out, self.w_2) + self.b_2)
        return out
model = Model()

# 查看模型参数
for name, param in model.named_parameters():
    print(name)
    print(type(param.data))
    print(param.shape)
    
# 输出
w_1
<class 'torch.Tensor'>
torch.Size([5, 4])
b_1
<class 'torch.Tensor'>
torch.Size([4])

w_2
<class 'torch.Tensor'>
torch.Size([4, 1])
b_2
<class 'torch.Tensor'>
torch.Size([1])
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值