首页 > 其他分享 >6-SoftMax回归

6-SoftMax回归

时间:2024-08-23 16:48:11浏览次数:10  
标签:loss DataLoader 回归 torch dataset SoftMax net data

https://blog.csdn.net/qq_43799400/article/details/131202148

写代码遇到问题
1、使用data.DataLoader时如果使用多进程num_workers,会报错

其原因可能是

https://blog.csdn.net/KaelCui/article/details/106184158
2、loss的backward
注意backward只能对标量,而不是对张量。
我们定义损失函数时,如果没有进行reduction=sum/mean,那么损失函数返回的是张量
3、DataLoader的第一个参数必须是dataset数据集
在线性回归中,我们先将数据转为dataset再放入DataLoader

这是因为我们要先将多个张量合并到pytorch的一个统一的数据集中才可以

import torch
from torch.utils import data

# 准备数据
true_w = torch.tensor([2, -3.4])
true_b = 4.2

def synthetic_data(w, b, num_examples):
    x = torch.normal(0, 1, size=(num_examples, 2))
    y = torch.matmul(x, w) + b
    y += torch.normal(0, 1, size = y.shape)
    return x, y.reshape((-1, 1))

features, labels = synthetic_data(true_w, true_b, 1000)

# 获取数据
def load_data(data_arrays, batch_size, is_train = True):
    dataset = data.TensorDataset(*data_arrays) # 使用data.TensorDataset函数将输入的data_arrays中的张量组合成一个数据集
    return data.DataLoader(dataset, batch_size, shuffle=is_train) # 使用data.DataLoader函数将数据集包装成一个数据加载器

data_iter = load_data((features, labels), 10)

# 构造模型
net = torch.nn.Sequential(torch.nn.Linear(2, 1)) # 输入特征形状  输出特征形状
net[0].weight.data.normal_(0, 0.01)
net[0].bias.data.fill_(0)

# 定义损失函数和优化器
loss = torch.nn.MSELoss()
optimizer = torch.optim.SGD(net.parameters(), lr=0.01)

# 训练
epochs = 10
for epoch in range(epochs):
    for X, Y in data_iter:
        l = loss(net(X), Y)
        optimizer.zero_grad()

        l.backward()
        optimizer.step()

    l = loss(net(features), labels)
    print('epoch:{},  loss:{}'.format(epoch+1, l.item()))

标签:loss,DataLoader,回归,torch,dataset,SoftMax,net,data
From: https://www.cnblogs.com/morehair/p/18376447

相关文章

  • Python个人收入影响因素模型构建:回归、决策树、梯度提升、岭回归
    全文链接:https://tecdat.cn/?p=37423原文出处:拓端数据部落公众号“你的命运早在出生那一刻起便被决定了。”这样无力的话语,无数次在年轻人的脑海中回响,尤其是在那些因地域差异而面临教育资源匮乏的年轻人中更为普遍。在中国,这种现象尤为明显:没有生在大城市的他们,从小便需面对......
  • 用Python实现9大回归算法详解——09. 决策树回归算法
    1.决策树回归的基本概念决策树回归(DecisionTreeRegression)是一种树状结构的回归模型,通过对数据集进行递归分割,将数据分成更小的子集,并在每个子集上进行简单的线性回归。决策树的核心思想是通过选择特征及其阈值来最大化每次分裂后的目标函数增益,从而找到使误差最小化的模型......
  • 4-线性回归
    python中*运算符的使用用于将可迭代对象(如列表或元组)的元素解压缩为单独的参数当我们从Dataloader取出来的时候,又会将压缩为的单独参数分开importtorchfromtorch.utilsimportdata#准备数据true_w=torch.tensor([2,-3.4])true_b=4.2defsynthetic_data(w,b......
  • 亦菲喊你来学机器学习(9) --逻辑回归实现手写数字识别
    文章目录逻辑回归实现手写数字识别训练模型测试模型总结逻辑回归逻辑回归(LogisticRegression)虽然是一种广泛使用的分类算法,但它通常更适用于二分类问题。然而,通过一些策略(如一对多分类,也称为OvR或One-vs-Rest),逻辑回归也可以被扩展到多分类问题,如手写数字识别(通常是......
  • 线性回归(Linear Regression)
    一、损失(Loss)类型:L1损失【Re】:对模型对各个样本的预测的绝对误差求和。平均绝对误差(MAE)【Re】:一组样本L1损失的平均值。L2损失:【Re】对模型【Re】对各个样本的预测的误差的平方求和。均方误差【Re】:一组样本的L2 损失的平均值。如果数据中特征值超过了一定范围,或者模......
  • 【人工智能】案例分析和项目实践:使用高斯过程回归预测股票价格
    一、项目背景与目标股票价格预测是金融领域的热门话题,对于投资者、金融机构及研究者而言具有重要意义。高斯过程回归(GaussianProcessRegression,GPR)作为一种强大的非参数贝叶斯回归方法,能够处理复杂的非线性关系,同时提供预测的不确定性估计,非常适合用于股票价格预测。项目......
  • 3-线性回归从零实现
    1、注意=和-=在梯度更新时的区别defminbatch_sgd(params,lr,batch_size):withtorch.no_grad():forparaminparams:param=param-lr*param.grad/batch_sizeparam.grad.zero_()这段代码是错误的,应该改成param-=lr*param.grad/batch_size原因如下:import......
  • 深度学习:(一)基础解释,逻辑回归重点说明
    一、专业名词1.MachineLearning#机器学习(ML)2.DeepLearning#深度学习(DL)3.ConvolutionalNeuralNetworks#卷积神经网络(CNN)4.RecurrentNeuralNetwork#循环神经网络(RNN)5.LongShort-TermMemory#长短期记忆网络(LSTM)6.RectifiedLinearUnit#修正线性单元(R......
  • Python个人收入影响因素模型构建:回归、决策树、梯度提升、岭回归
    全文链接:https://tecdat.cn/?p=37423原文出处:拓端数据部落公众号“你的命运早在出生那一刻起便被决定了。”这样无力的话语,无数次在年轻人的脑海中回响,尤其是在那些因地域差异而面临教育资源匮乏的年轻人中更为普遍。在中国,这种现象尤为明显:没有生在大城市的他们,从小便需面对教育......
  • 机器学习线性回归算法——原理+python详细代码解析(sklearn)
    线性回归算法作为经典的机器学习算法之一,拥有极为广泛的应用范围,深受业界人士的青睐。该算法主要用于研究分析响应变量如何受到特征变量的线性影响。其通过构建回归方程,借助各特征变量对响应变量进行拟合,并且能够利用回归方程进行预测。鉴于线性回归算法较为基础、简单,所以比较......