概述
背景
nn.Linear()到底是在做什么? 得到了什么
举例说明
net = nn.Sequential(
#第一层
nn.Linear(5, 3),
nn.ReLU(),
#第二层
nn.Linear(3, 2),
nn.ReLU(),
#第三层(输出层)
nn.Linear(2, 1)
)
上面是一个神经网络模型架构的代码,nn.Sequential()指的是,调用pytorch.nn类下的Sequential序列化方法进行模型搭建. 模型中按照顺序,包括了nn.Linear()全链接层和前两层的激活函数nn.RuLU(), 在nn.Sequential中,模型就像是搭积木一样,一层一层的堆叠.
我们用可视化工具来展示上面这个模型的样子:
http://playground.tensorflow.org/
nn.Linear(5, 3) 这句话,代表了网络的第一层,它有5个输入和3个输出.
什么意思? 初学者看到这里就蒙圈了!!! 什么乱七八糟的,这些线是什么,? 我看不懂, 深度学习太难了.
其实不用着急,只要静下心来,集合公式你就很好理解了.
首先,左边的
这五个,代表的是样本的特征! 5个特征,就说明样本有五维
x
=
(
x
1
,
x
2
,
x
3
,
x
4
,
x
5
)
x=(x_1,x_2,x_3,x_4,x_5)
x=(x1,x2,x3,x4,x5).
那如何从五个特征变成3个特征呢?
通过矩阵运算的知识,我们可以直接的想到下面的公式:
[
x
1
,
x
2
,
x
3
,
x
4
,
x
5
]
1
×
5
×
W
5
×
3
=
[
x
n
e
w
1
,
x
n
e
w
2
,
x
n
e
w
3
]
[x_1,x_2,x_3,x_4,x_5]_{1times5} times W_{5times3}=[x_{new1},x_{new2},x_{new3}]
[x1,x2,x3,x4,x5]1×5×W5×3=[xnew1,xnew2,xnew3]
这很容易想到,那么nn.Linear(5,3)这句话的目的,就是生成一个
W
5
×
3
来对特征的维度进行变换
W_{5times3}来对特征的维度进行变换
W5×3来对特征的维度进行变换
那么对应到图像上W到底表示什么呢? 其实表示的就是中间这些线.
我们举个例子来看一下:
W
=
[
w
11
w
12
w
13
w
21
w
22
w
23
w
31
w
32
w
33
w
41
w
42
w
43
w
51
w
52
w
53
]
(2)
W= begin{bmatrix} w_{11} & w_{12} & w_{13} \ w_{21} & w_{22} & w_{23} \ w_{31} & w_{32} & w_{33}\ w_{41} & w_{42} & w_{43}\ w_{51} & w_{52} & w_{53} end{bmatrix} tag{2}
W=⎣
⎡w11w21w31w41w51w12w22w32w42w52w13w23w33w43w53⎦
⎤(2)
这个矩阵中的第一行,其实就代表右输入的第一个特征出发,到输出的三个神经元上的线. 如下图所示
一个神经元有三条线,五个就是5*3,因此就构成一个矩阵
W
5
×
3
W_{5times3}
W5×3,同时图像和W之间也11对应起来了.
这下子后面的nn.Linear()也就好理解了. 很简单了吧!!!
最后
以上就是要减肥小丸子为你收集整理的[机器学习]深度学习初学者大疑问之nn.Linear(a,b)到底代表什么?背景举例说明的全部内容,希望文章能够帮你解决[机器学习]深度学习初学者大疑问之nn.Linear(a,b)到底代表什么?背景举例说明所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复