详细实现步骤:
- 导入相关包。
import random import torch
- 根据真实的w,b自动生成实验数据集。
为了简单起见,我们将[根据带有噪声的线性模型构造一个人造数据集。] 我们的任务是使用这个有限样本的数据集来恢复这个模型的参数。 我们将使用低维数据,这样可以很容易地将其可视化。 在下面的代码中,我们生成一个包含1000个样本的数据集,每个样本包含从标准正态分布中采样的2个特征。我们的合成数据集是一个矩阵𝐗∈ℝ1000×2X∈R1000×2。
(**我们使用线性模型参数𝐰=[2,−3.4]⊤w=[2,−3.4]⊤、𝑏=4.2b=4.2和噪声项𝜖ϵ生成数据集及其标签:
𝐲=𝐗𝐰+𝑏+𝜖.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) true_w = torch.tensor([2, -3.4])
注意,[
features
中的每一行都包含一个二维数据样本,labels
中的每一行都包含一维标签值(一个标量)]。print('features:', features[0],'\nlabel:', labels[0])
features: tensor([-0.1272, 0.8400]) label: tensor([1.0915])
-
读取数据集。</