提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
目录
一、线性回归的完整训练流程
包括数据生成、批量数据加载、模型定义、损失计算、梯度更新,以及最后的训练结果可视化。以下是详细的解释:
二、步骤
1.数据生成
代码如下(示例):
def create_data(w,b,data_num):
x=torch.normal(0,1,(data_num,len(w))) # 随机生成特征 x,服从标准正态分布
y=torch.matmul(x,w)+b # 按线性关系生成目标值 y
noise=torch.normal(0,0.01,y.shape) # 添加噪声,模拟真实数据的不确定性
y+=noise # 将噪声加到目标值上
return x,y
num=500 true_w=torch.tensor([8.1,2,2,4]) #权重 true_b=torch.tensor(1.1) #偏置值
- 生成特征:
x是一个服从正态分布的二维张量,行数为样本数量,列数为特征数量(由w的长度决定)。 - 生成目标值:通过公式 y=xw+by = xw + by=xw+b 计算真实值。
- 添加噪声:为目标值加入小幅随机噪声,增加数据的随机性。
2.数据加载器
代码如下(示例):
def data_provider(data,label,batchsize):
length=len(label)
indices=list(range(length)) # 生成样本索引
random.shuffle(indices) # 打乱索引,保证数据顺序随机
for each in range(0,length,batchsize): # 按批量大小划分数据
get_indices=indices[each:each+batchsize]
get_data=data[get_indices]
get_label=label[get_indices]
yield get_data,get_label # 使用生成器逐批返回数据
功能
- 数据分批:将完整的数据集分成小批量(
batchsize),用于梯度下降训练。 - 随机性:每次迭代随机打乱数据,减少过拟合风险。
- 生成器:用
yield按需返回小批量数据,节省内存。

最低0.47元/天 解锁文章
592

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



