PyTorch学习笔记:nn.Linear——线性回归层
torch.nn.Linear(in_features, out_features, bias=True, device=None, dtype=None)
功能:对输入数据应用线性变换运算: y = x A T + b y=xA^T+b y=xAT+b
输入:
in_features
:输入样本的尺寸,即 x x x的长度out_features
:输出样本的尺寸,即 y y y的长度bias
:是否添加偏置项,如果设置为False
,则该层不会学习附加的偏置项,默认为True
注意:
- 线性层的输入可以是任意维度,最后一个维度表示x,并且最后一个维度的长度必须与定义线性回归层使用的参数
in_features
大小一致
补充:
-
线性回归层的权重参数可以通过
.weight
方法调取,偏置参数可以通过.bias
方法调取 -
网络参数尺寸由输入样本尺寸和输出样本尺寸决定:权重参数为2维数组,尺寸为[out_features, in_features];偏置参数尺寸为1维数组,尺寸为[out_features]
-
初始化的参数服从均匀分布:
u ( − k , k ) , 其中 k = 1 i n _ f e a t u r e s u(-\sqrt{k},\sqrt{k}),其中k=\frac1{in\_features} u(−k,k),其中k=in_features1
代码案例
一般用法
import torch.nn as nn
import torch
x = torch.arange(10, dtype = torch.float32).view(1,10)
lin = nn.Linear(in_features=10, out_features=5)
y = lin(x)
print(x)
print(y)
输出
# 经过线性回归层之前
tensor([[0., 1., 2., 3., 4., 5., 6., 7., 8., 9.]])
# 经过线性回归层之后
tensor([[-2.8759, 3.0576, -0.7961, -1.2897, 3.7157]],
grad_fn=<AddmmBackward>)
提取网络层的参数信息
print(lin.weight)
print(lin.weight.shape)
print(lin.bias)
print(lin.bias.shape)
输出
# 权重参数
Parameter containing:
tensor([[-0.0099, 0.2451, -0.0532, 0.1081, -0.0393, -0.1213, -0.1463, 0.0669,
-0.1575, -0.0706],
[-0.1148, -0.0775, 0.2737, -0.3030, -0.1963, 0.0923, 0.2992, 0.1199,
0.2811, -0.1478],
[-0.0505, 0.2176, 0.0202, 0.0401, 0.1174, -0.2441, -0.3055, -0.1314,
0.2129, 0.0935],
[-0.0078, -0.2243, 0.1759, 0.3004, -0.1303, -0.2597, -0.2271, 0.3144,
-0.0914, -0.1003],
[ 0.1836, 0.1219, 0.2339, -0.2303, 0.2604, -0.0198, 0.2339, -0.2411,
0.2057, 0.1353]], requires_grad=True)
# 权重参数尺寸
torch.Size([5, 10])
# 偏置参数
Parameter containing:
tensor([-0.2704, 0.2675, -0.2156, 0.2969, 0.2958], requires_grad=True)
# 偏置参数尺寸
torch.Size([5])
官方文档
nn.Linear():https://pytorch.org/docs/stable/generated/torch.nn.Linear.html?highlight=linear#torch.nn.Linear
初步完稿于:2022年1月28日