一、单层回归网络:线性回归
1. tensor手动实现单层回归神经网络的正向传播
# tensor手动实现单层回归神经网络的正向传播
import torch
from torch.nn import functional as F
X = torch.tensor([[1,0,0],[1,1,0],[1,0,1],[1,1,1]], dtype = torch.float32) # 特征张量
w = torch.tensor([-0.2, 0.15, 0.15]) # 定义常量b和权重w,即b为-0.2,w为(0.15, 0.15)
z = torch.tensor([-0.2, -0.05, -0.05, 0.1]) # 标签张量
# 定义线性回归计算的函数
def LinearR(X,w):
zhat = torch.mv(X,w) # 预测值z, 矩阵X与向量w相乘
return zhat
zhat = LinearR(X, w)
zhat
注意踩坑:
- 标签和特征类型:PyTorch中的许多函数都不接受浮点型的分类标签,但也有许多函数要求真实标签的类型必须与预测值的类型一致,因此标签的类型定义总是一个容易踩坑的地方。通常来说,我们还是回将标签定义为float32,如果在函数运行时报错,要求整形,我们再使用.long()方法将其转换为整型。
- 标签维度:另一个非常容易踩坑的地方是,PyTorch中许多函数不接受一维张量但同时也有许多函数不接受二维标签,因此我们在生成标签时,可以默认生成二维标签,若函数报错说不能接受二维标签,我们再使用view()函数将其调整为一维。
2. torch.nn.Linear实现单层回归神经网络的正向传播
# torch