Pytorch学习(三)Linear层

前言

在讲Linear线性变换之前,先来看一个矩阵变换的例子

from __future__ import print_function
import torch

in_features = torch.tensor([2,2,2,2], dtype=torch.float32)

weight_matrix = torch.tensor([
    [5,5,5],
    [3,3,3],
    [4,4,4],
    [2,2,2]
], dtype=torch.float32)

out_features = in_features.matmul(weight_matrix)
print(out_features)

打印输出:
tensor([28., 28., 28.])

例子中创建了一个叫in_features一维张量,一个weight_matrix 权重矩阵二维张量。然后,使用matmul()函数来执行生成一维张量的矩阵乘法运算。它把一个有四个元素的一维张量映射成一个有三个元素的一维张量。

这就是Linear的工作原理。它们使用权重矩阵将一个in_feature空间映射到一个out_feature空间。
原理:对输入的数据应用线性转换: y = xA^T + b。

函数原型

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

参数说明

在这里插入图片描述
in_features:指的是输入的二维张量的大小,即输入的[batch_size, size]中的size。
out_features:指的是输出的二维张量的大小,即输出的二维张量的形状为[batch_size,out_features]。
回到文章开头矩阵相乘的例子,创建的in_features一维张量结构为[1,4],那么4就是Linear输入的二维张量的大小,weight_matrix 权重矩阵二维张量的结构为[4,3],那么这里的3就是Linear输出的二维张量的大小。根据矩阵乘法的线性代数规则,当我们传in_features = 4,out_features = 3给Linear()函数时,PyTorch LinearLayer类会自动创建一个4 x 3的权重矩阵。

示例

m = torch.nn.Linear(4, 3)
input = torch.tensor([2,2,2,2], dtype=torch.float32)
output = m(input)
print(output)

打印输出:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44901043/article/details/123765600