文章目录
一. 生成数据集
我们使用线性模型参数 w=[2,−3.4]⊤ 、 b=4.2 和噪声项 ϵ 生成数据集及其标签:
y = X w + b + ϵ \mathbf{y}=\mathbf{X} \mathbf{w}+b+\epsilon y=Xw+b+ϵ
在这里我们认为标准假设成立,即 ϵ 服从均值为0的正态分布。 为了简化问题,我们将标准差设为0.01。下面的代码生成合成数据集。
def synthetic_data(w, b, num_examples): #@save
"""生成 y = Xw + b + 噪声。"""
X = torch.normal(0, 1, (num_examples, len(w)))
y = torch.matmul(X, w) + b
y += torch.normal(0, 0.01, y.shape)
return X, y.reshape((-1, 1))
true_w = torch.tensor([2, -3.4])
true_b = 4.2
features, labels = synthetic_data(true_w, true_b, 1000)
features中的每一行都包含一个二维数据样本,labels中的每一行都包含一维标签值(一个标量)。
通过生成第二个特征features[:, 1]和labels的散点图,可以直观地观察到两者之间的线性关系。
xx = np.zeros(1000)
yy = np.zeros(1000)
for i in