Pytorch线性层linear文档解析

今天学了一下线性层,接下来是整理。

pytorch官方链接:https://pytorch.org/docs/stable/generated/torch.nn.Linear.html#torch.nn.Linear

这个方法实现了一个仿射变换: y=xAT+b

下面是这个方法的形参:



 

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

in_dfeatures:传入的特征的维度

out_features:传出的参数的维度

bias:是否有偏置,既上面的公式是否含有b

device:指定计算设备,可根据设备情况自己选择

dtype:数据类型。

所含有的方法:

.weight和.bias

这里创建linear之后会自动生成w和b既权重和偏置。当然你也可以手动赋值。这个权重和偏置也可以通过训练更新,具体可见我花书的那一篇文章(虽然写的很水,狗头保命)

简而言之,你可以通过linear进行降维(pytorch的官方文档例子就是降维),升维。

还可以进行分类,还可以作为神经网络层。这里的w和b的数量可以计算:

w:由于是linear是全连接层,故有每一个输入和每一个输出都有权重w,b作为偏置只在输出层含有。举一个例子:在 nn.Linear(in_features=20, out_features=30) 中:

w有(20*30)总共600个,b有30个。

pytorch官方文档例子解读:

m = nn.Linear(20, 30)
input = torch.randn(128, 20)
output = m(input)
print(output.size())

#result
torch.Size([128, 30])

这里首先实例化了一个m,将20给维度的输入转化为30个维度的输出。

数输入input是一个张量,有128个样本,每个样本有20个特征。

tensor([[ 0.4160,  0.2219,  0.1617,  ...,  0.3385, -0.4773, -1.2973],
        [ 1.2581,  0.8071,  0.3226,  ...,  0.3419, -0.1757, -0.5805],
        [-0.9781, -0.1614, -2.6135,  ..., -0.0666, -0.1508,  0.5626],
        ...,
        [-1.1205, -1.8493, -1.7808,  ..., -0.0452, -1.0787,  0.8964],
        [-0.9551,  2.2677,  1.3870,  ..., -0.0458,  0.4140,  0.2278],
        [ 0.1666, -0.4004,  0.5973,  ..., -0.9482,  1.4818, -1.1237]])

很大的一个矩阵is't it?

现在我们需要进行仿射变换:

调用linear

得到的结果变成了128个维度为30的矩阵。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值