线性回归有几个实现过程:
- 生成数据集
使用 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)