• 线性回归实现


    1.python 实现步骤
    数据部分
    数据生成
    数据处理(小批量提取,生成迭代器)
    模型初始化
    模型定义
    模型初始化
    损失函数定义
    更新规则:
    优化函数定义:SGD 梯度下降
    训练(包含求出损失,反向传递,梯度下降,梯度清零)
    2. 代码部分+解读:
    import torch as tc
    import numpy as np
    from torch.utils import data
    from LimuAi.Linear_regression import synthetic_data
    from torch import nn
    #处理数据:
    ‘’’
    定义实际数据
    ‘’’
    true_k=tc.tensor([2,-3.4])
    true_b=4.2
    feature,lable=synthetic_data(true_k,true_b,1000) #数据初始化
    ‘’’
    定义读取数据的方法
    ‘’’
    def read_data(sample,batch_size,is_train=True):#python是一个缩进控制组块的语言
    dataset=data.TensorDataset(*sample) #将sample变成元组之后,经过TensorDataset变成dataset对象,方便传入dataloader函数进行小批量的抽取(我猜的,还没求证)
    return data.DataLoader(dataset,batch_size,shuffle=is_train) #返回一个迭代器,小批量的返回样本数据

    batch_size=10
    item=read_data((feature,lable),batch_size) #生成item作为下方训练用的迭代器,进行小批量随机梯度下降
    print(next(iter(item))) # 使用next得出第一个小批次

    ‘’’
    定义模型
    ‘’’

    net = nn.Sequential(nn.Linear(2, 1)) #搭建一个单层神经网络,并且神经元使用的是线性结构,且有两个输入,一个输出

    ‘’’
    初始化模型参数
    ‘’’

    net[0].weight.data.normal_(0, 0.01)#对net实力初始化模型即使用[0]来定位,weight/bias .data来初始化,
    net[0].bias.data.fill_(0)
    ‘’’
    定义损失函数
    ‘’’
    loss = nn.MSELoss() #使用nn底下的包即可实现计算MSE

    ‘’’
    定义优化算法
    ‘’’

    trainer = tc.optim.SGD(net.parameters(), lr=0.03)
    #把优化算法也定义成对象,通过torch的optim包的SGD来实例化,SGD实例化需要模型参数和学习率(也是梯度下降所必须的)
    #参数通过net的parameter可直接输入

    ‘’’
    训练
    ‘’’
    num_epochs = 3 #把数据集遍历三遍
    for epoch in range(num_epochs): #迭代器必须是一个list/元组之类的
    for X, y in item: #取出随机小批次,用来梯度下降
    l=loss(net(X),y)#比较计算出的yhat和真实的y的RMSE
    trainer.zero_grad() #用来清除模型的累计梯度
    l.backward() #反向传递,回调
    trainer.step() #更新模型参数
    l=loss(net(feature),lable)
    print(f’epoch {epoch + 1}, loss {l:f}')

  • 相关阅读:
    Qt utc时间字符串转为本地时间
    Arcgis克里金插值报错:ERROR 999999: 执行函数时出错。 表名无效。 空间参考不存在。 ERROR 010429: GRID IO 中存在错误
    自动化测试用例设计-软件测试基本概念解析
    力扣刷题(代码回忆录)——回溯算法
    [附源码]JAVA毕业设计口腔医院网站(系统+LW)
    js文字提示层案例分析
    u盘格式化后数据能恢复吗?
    面试算法33:变位词组
    购买窗帘时哪些可以不做?-江南爱窗帘十大品牌
    前端首屏渲染时间的极致优化
  • 原文地址:https://blog.csdn.net/weixin_43214644/article/details/126556901