栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

pytorch学习笔记(二):线性回归的简洁实现

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

pytorch学习笔记(二):线性回归的简洁实现

声明:感谢李沐老师,学习内容基于序言 — 动手学深度学习 2.0.0-beta0 documentation (d2l.ai)

一、读取数据集。
这里我们选取的数据集是Kaggle竞赛平台的一个数据集:Student Performance Data Set | Kaggle 选取了其中的数学成绩数据集。
对非数值型数据进行编码处理,对G1,G2,G3进行分组处理。

import numpy as np
import torch
from torch.utils import data
from d2l import torch as d2l
import  pandas as pd
from torch import nn  # nn是神经网络的缩写

df = pd.read_csv('D:/张文奇昆工/student/mat123.csv')

因为属性特征(school,sex等)对最终成绩G3的相关性很低,所以我们选取G1,G2来预测G3。

inputs = torch.tensor(df.iloc[:,30:32].values).float()
outputs = torch.tensor(df.iloc[:,32:33].values).float()

在上一篇文章从零实现线性回归中抽取小批量数据样本的data_iter函数中用到了for循环,for循环花销很大,所以用深度学习框架中的内置迭代器来实现这个功能。

def load_array(data_arrays, batch_size, is_train=True):  #@save
    """构造一个PyTorch数据迭代器"""
    dataset = data.TensorDataset(*data_arrays)
    return data.DataLoader(dataset, batch_size, shuffle=is_train)

我们打印一个批量大小为10的数据样本。

batch_size = 10
data_iter = load_array((inputs, outputs), batch_size)
print(next(iter(data_iter))


二、定义模型:
定义模型的目的:将模型的输入和参数同模型的输出关联起来。为了简化模型构建的过程,我们可以使用框架预先定义好的层。我们要了解Sequential类,Sequential类将多个层串联起来。以后我们遇到多层的模型会用到Sequential。Sequential实例将数据传到第一层,然后将第一层的输出作为下一层的输入,以此类推。

net = nn.Sequential(nn.Linear(2, 1))

三、初始化模型参数:
可以使用_结尾的办法将参数替换,实现参数的初始化。

net[0].weight.data.normal_(0, 0.01)
net[0].bias.data.fill_(0)

四、 定义损失函数:

loss = nn.MSELoss()

五、 定义优化算法:
小批量随机梯度下降算法

trainer = torch.optim.SGD(net.parameters(), lr=0.03)

六、 训练:
步骤:1、读取一小批量的训练样本,通过我们的模型获得一组预测。
2、计算损失,我们开始反向传播,存储每个参数的梯度。
3、使用优化算法SGD来更新模型的参数。

num_epochs = 30
for epoch in range(num_epochs):
    for X, y in data_iter:
        l = loss(net(X) ,y)
        trainer.zero_grad()
        l.backward()
        trainer.step()
    l = loss(net(inputs), outputs)
    print(f'epoch {epoch + 1}, loss {l:f}')

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1011546.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号