nn.Linear就是神经网络中的线性层,类似于数学中的线性函数,可以实现形如y=X*weight^T+b的功能。
python
#导包
import torch.nn as nn
import torch
#创建1个张量
sample=torch.tensor([1.,10.,100.])
#nn.Linear(in_feature,out_feature,bias),这里设置了不需要bias,即函数为y=k*x
linear=nn.Linear(3,3,bias=False)
print(linear.weight)
#weight为一个3*3的张量
out:
Parameter containing:
tensor([[ 0.0777, 0.1295, -0.3284],
[-0.5325, 0.2380, 0.1290],
[ 0.3780, -0.1113, 0.3035]], requires_grad=True)
output=linear(sample)
print(output)
out:
tensor([-31.4626, 14.7472, 29.6170], grad_fn=<SqueezeBackward3>)
我们输入有3个特征 x1,x2,x3,bias=False,所以方程式为y=w1*x1+w2*x2+w3*x3
y1=0.0777*1+0.1295*10+(-0.3284)*100=-31.46
y2=-0.5325*1+0.2380*10+0.1290*100=14.74
y3=0.3780*1+(-0.1113)*10+0.3035*100=29.61
输出特征也为3