线性回归有几个实现过程:
- 生成数据集
使用 torch.matmul 函数计算特征矩阵 X 与权重向量 w 之间的线性组合,并加上偏置项 b,得到目标变量 y。添加噪声:使用 torch.normal 函数生成形状与目标变量 y 相同的噪声,并将其加到目标变量中。最后,返回特征矩阵 X 和重塑后的目标变量 y,其中 y 的形状为 (-1, 1),保持列向量的形式。
def synthetic_data(w, b, num_examples): #@save
"""生成 y = Xw + b + 噪声。"""
X = torch.normal(0, 1, (num_examples, len(w))) #最后一个参数指定X维度,len(w)特征个数
y = torch.matmul(X, w) + b
y += torch.normal(0, 0.01, y.shape)
return X, y.reshape((-1, 1))
使用d2l库进行可视化生成第二个特征features[;,1]和labels的散点图观察两者的关系
d2l.set_figsize()
d2l.plt.scatter(features[:, (1)].detach().numpy(), labels.detach().numpy(), 1);
- 读取数据集
每次通过读取一批的样本来更新模型
def data_iter(batch_size, features, labels):
num_examples = len(features)
indices = list(range(num_examples))
# 这些样本是随机读取的,没有特定的顺序
random.shuffle(indices)
for i in range(0, num_exa

本文详细介绍了线性回归的实现过程,包括数据生成、模型定义、损失函数和优化算法。通过PyTorch实现,展示了如何利用torch.matmul进行线性组合,添加噪声,以及如何使用随机梯度下降进行训练。此外,还讨论了数据加载和简洁的线性回归模型实现,利用nn.Linear和nn.Sequential构建模型,并使用MSELoss计算损失。整个过程帮助理解深度学习的基础和模型训练流程。

1563

被折叠的 条评论
为什么被折叠?



