线性回归简洁实现

1.通过使用深度学习框架来简洁实现线性回归模型生成数据集

复制代码
import numpy as np
import torch
from torch.utils import data
from d2l import torch as d2l

true_w = torch.tensor([2, -3.4])
true_b = 4.2
features, labels = d2l.synthetic_data(true_w, true_b, 1000)

2.调用框架现有API来读取数据

复制代码
def load_array(data_arrays, batch_size, is_train=True):
    """构造Pytorch数据迭代器"""
    dataset = data.TensorDataset(*data_arrays)
    return data.DataLoader(dataset, batch_size, shuffle=is_train)

batch_size=10
data_iter=load_array((features, labels),batch_size)

next(iter(data_iter))

3.使用框架预定义好的层

复制代码
from torch import nn

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

4.初始化模型参数

复制代码
net[0].weight.data.normal_(0, 0.01)
net[0].bias.data.fill_(0)

5.计算均方误差使用的是MSELoss类(平方范式)

复制代码
loss = nn.MSELoss()

6.实例化SGD实例

复制代码
trainer = torch.optim.SGD(net.parameters(), lr=0.03)

7.训练过程代码

复制代码
num_epochs = 3
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(features), labels)
    print(f'epoch{epoch + 1},loss {1:f}')
相关推荐
CoderCodingNo1 分钟前
【GESP】C++五级练习题 luogu-B3628 机器猫斗恶龙
开发语言·c++·算法
橘颂TA8 分钟前
【剑斩OFFER】算法的暴力美学——力扣 1020 题:飞地的数量
数据结构·c++·算法·leetcode·职场和发展·结构与算法
hetao173383715 分钟前
2026-01-27~28 hetao1733837 的刷题记录
c++·笔记·算法
2301_8223663517 分钟前
C++中的智能指针详解
开发语言·c++·算法
u01092727142 分钟前
C++中的模板方法模式
开发语言·c++·算法
重生之我是Java开发战士1 小时前
【优选算法】滑动窗口:长度最小的子数组,无重复字符的最长子串,最大连续1的个数,将x减到0的最小操作数,水果成篮,异位词,串联所有单词的子串,最小覆盖子串
算法
naruto_lnq1 小时前
C++与自动驾驶系统
开发语言·c++·算法
啊阿狸不会拉杆1 小时前
《数字信号处理》第6章:数字滤波器的基本概念及几种特殊滤波器
算法·matlab·信号处理·数字信号处理·dsp
放荡不羁的野指针1 小时前
leetcode150题-双指针
数据结构·算法·leetcode
好学且牛逼的马2 小时前
【Hot100|15-LeetCode 238. 除自身以外数组的乘积】
数据结构·算法·leetcode