Pytorch nn.Linear 全连接层的原理和作用(个人理解)

一、官网说明:

Pytorch nn.Linear 全连接层的原理和作用(个人理解)_第1张图片

二、个人理解

      对CNN来说图片以batchsize的大小并行送入神经网络,经过一些卷积,到最后送入全连接层进行分类,送入全连接层之前的每个特征图已经被拉平(变成1xn的形式,这里的n就是x中的3,x中的10代表有10个1),所以下面的x中的10行可以理解为batchsize(即10张图片),x中的3列可以理解为每个图片被提取了3个特征,最后的y可以理解为对这10个图片进行一个5分类,分类的结果为这5个数中最大的那个数所对应的索引,具体分类的结果为索引对应的类别。

三、计算过程

计算原理的公式,可以理解为简单的线性方程。

已知输入x:

x=torch.randn([10,3])

输出:tensor([[-0.2022, -1.0258, -0.0116],
        [ 0.4581, -1.4392,  0.7463],
        [ 0.4723,  0.7842,  2.1767],
        [-1.6525, -0.1205, -1.7498],
        [-0.9119, -0.1080,  0.4499],
        [-0.2130,  0.5349, -0.5764],
        [ 0.8852, -0.2906,  0.4138],
        [ 0.4349,  0.1988,  0.5386],
        [ 1.2275,  0.3119, -0.7539],
        [-0.3409,  0.3802, -0.6528]])

x为一个10行3列的tensor,也可以理解为矩阵,方便我们理解计算公式,也可以理解为10个样本(也就是神经网络中的batchsize=10),每个样本拥有3个特征(也就是channel=3)

定义一个全连接层:

lin=nn.Linear(3,5)

输入通道为3,输出通道为5,也可以理解为将输入的3个特征转换成5个特征

将x带入全连接层得到y:

y=lin(x)
输出y为:
tensor([[-0.2761,  0.9752, -0.0340,  1.1611,  1.1389],
        [-0.3531, -0.6225,  0.2387,  0.0675, -0.2862],
        [-0.2320,  0.0627,  0.0128,  0.5417,  0.2288],
        [-0.2319,  0.0789, -0.0258,  0.5046,  0.0307],
        [ 0.1834, -0.5264, -0.3203,  0.3163, -0.1088],
        [-0.0793,  0.0215, -0.1705,  0.5240,  0.0298],
        [ 0.0977, -0.4148, -0.2549,  0.3503, -0.0740],
        [-0.1738,  0.3037, -0.0414,  0.7681,  0.6529],
        [ 0.3720, -0.6520, -0.4788,  0.3220, -0.0782],
        [-0.1595, -1.0845,  0.0117, -0.2869, -1.1594]],

得到的y为一个10行5列的tensor,理解为原本每个样本拥有3个特征值,现在变成了5个。

可以理解为矩阵相乘,x【10,3】乘以A【3,5】得到y【10,5】 ( 我不知道这样理解对不)

神经网络的训练,训练的是A和b,找到一个合适的A和b使得y的值符合我们最后的结果

你可能感兴趣的:(pytorch全连接层,pytorch,深度学习)