pytorch实现线性回归

pytorch实现线性回归

代码

python 复制代码
import torch
import numpy as np
from torch.nn import init
from torch.utils import data
from torch import nn

# 数据集
num_inputs = 2
num_examples = 1000
true_w = [2, -3.4]
true_b = 4.2
features = torch.from_numpy(np.random.normal(0, 1, (num_examples, num_inputs))).type(torch.float32)  # 1000*2
labels = true_w[0] * features[:, 0] + true_w[1] * features[:, 1] + true_b
labels += torch.from_numpy(np.random.normal(0, 0.01, size=labels.size()))  # 噪声

batch_size = 10
# 将训练数据的特征和标签组合
dataset = data.TensorDataset(features, labels)
# 随机读取⼩批量
data_iter = data.DataLoader(dataset, batch_size, shuffle=True)

# 使用框架预定义好的层
net = nn.Sequential(nn.Linear(2, 1))  # 输入是二维,输出是一维

# 初始化模型参数
# net[0].weight.data.normal_(0, 0.01)
# net[0].bias.data.fill_(0)
init.normal_(net[0].weight, mean=0, std=0.01)
init.constant_(net[0].bias, val=0)

# 计算均方误差使用的是MELoss类,也称为L_2范数
loss = nn.MSELoss()
# 实例化SGD(随机梯度下降)实例
optimizer = torch.optim.SGD(net.parameters(), lr=0.03)

# 训练
num_epochs = 3
l = 0
for epoch in range(1, num_epochs + 1):
    for X, y in data_iter:
        output = net(X)
        l = loss(output, y.view(-1, 1))
        optimizer.zero_grad() # 梯度清零,等价于net.zero_grad()
        l.backward()
        optimizer.step()
    print('epoch %d, loss: %f' % (epoch, l.item()))

结果

相关推荐
阿里云大数据AI技术4 分钟前
云栖实录 | 从多模态数据到 Physical AI,PAI 助力客户快速启动 Physical AI 实践
人工智能
小关会打代码12 分钟前
计算机视觉进阶教学之颜色识别
人工智能·计算机视觉
IT小哥哥呀17 分钟前
基于深度学习的数字图像分类实验与分析
人工智能·深度学习·分类
机器之心42 分钟前
VAE时代终结?谢赛宁团队「RAE」登场,表征自编码器或成DiT训练新基石
人工智能·openai
机器之心43 分钟前
Sutton判定「LLM是死胡同」后,新访谈揭示AI困境
人工智能·openai
大模型真好玩1 小时前
低代码Agent开发框架使用指南(四)—Coze大模型和插件参数配置最佳实践
人工智能·agent·coze
jerryinwuhan1 小时前
基于大语言模型(LLM)的城市时间、空间与情感交织分析:面向智能城市的情感动态预测与空间优化
人工智能·语言模型·自然语言处理
落雪财神意1 小时前
股指10月想法
大数据·人工智能·金融·区块链·期股
中杯可乐多加冰1 小时前
无代码开发实践|基于业务流能力快速开发市场监管系统,实现投诉处理快速响应
人工智能·低代码
渣渣盟1 小时前
解密NLP:从入门到精通
人工智能·python·nlp