1、LazyLinear 简介

PyTorch提供一个惰性的线性层,这个模块的作用就是可以帮助我们实现惰性初始化参数,另外,还不必在定义线性层的时候同时指定输入维度和输出维度,只需要指定输出维度即可,对于输入维度采用自动推断的方式。总之,LazyLinear 类的功能和作用有下面三点:

(1)自动推断输入维度的大小。这个类允许用户在初始化时不指定输入特征的大小(in_features),该值会在模块第一次前向传播时自动推断。
(2)延迟初始化。权重和偏置参数在第一次前向传播时才被初始化,之前它们是未初始化的。
(3)惰性的线性层可以转换为常规线性层。一旦完成第一次前向传播,LazyLinear 模块就会变成常规的 torch.nn.Linear 模块。

2、LazyLinear 参数介绍

torch.nn.LazyLinear(out_features, bias=True, device=None, dtype=None)

参数说明:
out_features(int): 每个输出样本的大小。
bias(UninitializedParameter): 如果设置为 False则不会学习附加偏置。默认值:True。

补充:UninitializedParameter更多介绍请移步:http://www.hbase.cn/archives/1332.html

3、LazyLinear 应用举例

import torch
import torch.nn as nn
 
# 创建 LazyLinear 实例。注意,这里没有指定 in_features
lazy_linear = nn.LazyLinear(out_features=30)
 
# 输入数据
input = torch.randn(10, 20) 
 
# 前向传播
output = lazy_linear(input)
 
# 输出形状
print(output.size())  

输出结果为:

torch.Size([10, 30]) 

代码说明:在这个例子中,初始时并不需要指定输入特征的大小,它会在第一次调用 forward 方法时自动确定。

5、小结

torch.nn.LazyLinear 类是一种方便的工具,特别适合于在模型设计阶段不确定输入大小的场景。它简化了模型初始化过程,允许更灵活的设计,并在确定实际输入大小后自动完成参数初始化。

6、读者推荐

如果想真正的学好PyTorch,极力推荐大家关注《PyTorch面试精华》