pytorch直线拟合

news2024/11/25 12:22:00

目录

1、数据分析

2、pytorch直线拟合


1、数据分析

直线拟合的前提条件通常包括以下几点:

存在线性关系:这是进行直线拟合的基础,数据点之间应该存在一种线性关系,即数据的分布可以用直线来近似描述。这种线性关系可以是数据点在直角坐标系上的分布趋势,也可以是通过实验或观测得到的数据点之间的关系。

数据点之间的误差是随机的:误差应该是随机的,没有任何系统性的偏差,并且符合随机误差的统计规律。这意味着数据点在拟合直线周围的分布应该是随机的,而不是受到某种特定的规律或趋势的影响。

直线应符合数据点的总体趋势:在拟合直线时,应该尽可能地符合数据点的总体趋势,而不是被一些异常值所影响。如果存在一些异常值,它们不应该对拟合结果产生过大的影响。

数据点的数量应该足够多:在进行直线拟合时,需要足够多的数据点来保证拟合结果的准确性和可靠性。通常来说,数据点的数量应该足够多,以便涵盖各种情况,并且能够反映出数据的真实分布情况。

数据的观测或实验过程是可靠的:数据的观测或实验过程应该是可靠的,这意味着数据的测量值应该是准确的,并且没有受到某些特定因素的影响。如果数据的观测或实验过程存在偏差或误差,那么直线拟合的结果也可能受到影响。

从散点图看出,数据具有明显的线性关系​,本例不过多讨论数据是满足直线拟合的其它条件。

import torch
import matplotlib.pyplot as plt
x=torch.Tensor([1.4,5,11,16,21])
y=torch.Tensor([14.4,29.6,62,85,113.4])
plt.scatter(x.numpy(),y.numpy())
plt.show()

2、pytorch直线拟合

基于梯度下降法实现直线拟合。训练过程实际上是一种批量梯度下降(Batch Gradient Descent),这是因为每次更新参数时都使用了所有的数据。另外,学习率 learning_rate 和训练轮数 epochs 是可以调整的超参数,对模型的训练效果有很大影响。

import torch
import matplotlib.pyplot as plt
def Produce_X(x):
    x0=torch.ones(x.numpy().size)
    X=torch.stack((x,x0),dim=1)
    return X
def train(epochs=1,learning_rate=0.01):
    for epoch in range(epochs):
        output=inputs.mv(w)
        loss=(output-target).pow(2).sum()
        loss.backward()
        w.data-=learning_rate*w.grad
        w.grad.zero_()
        if epoch%80==0:
            draw(output,loss)
    return w,loss
def draw(output,loss):
    plt.cla()
    plt.scatter(x.numpy(), y.numpy())
    plt.plot(x.numpy(),output.data.numpy(),'r-',lw=5)
    plt.text(5,20,'loss=%s' % (loss.item()),fontdict={'size':20,'color':'red'})
    plt.pause(0.005)
​
if __name__ == "__main__":
    x = torch.Tensor([1.4, 5, 11, 16, 21])
    y = torch.Tensor([14.4, 29.6, 62, 85.5, 113.4])
    X = Produce_X(x)
    inputs = X
    target = y
    w = torch.rand(2, requires_grad=True)
    w,loss=train(10000,learning_rate=1e-4)
    print("final loss:",loss.item())
    print("weigths:",w.data)
    plt.show()
​

final loss: 8.216197967529297

weigths: tensor([5.0817, 5.6201])

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1178078.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

86.Linux系统下复制进程fork(逻辑地址和物理地址)

目录 fork复制进程 逻辑地址和物理地址 fork复制进程 fork 是一个系统调用,在 Linux/Unix 系统中用于创建一个新的进程,新进程称为子进程。子进程是父进程的副本,它从父进程那里继承了大部分属性和资源,包括代码、数据、打开的文…

【逗老师的无线电】Debian Linux手工编译安装MMDVM

看我干了啥,在Vmware里面装了一个Debian Linux并且运行了MMDVMHost,来支持业余无线电通联 开始之前先举个手,有多少朋友能分清MMDVM和Pi-Star关系的? MMDVM、Pi-Star和树莓派的关系 咱们先科普一下这个小知识点。各位HAM们应…

Python基础(第五期): python数据容器(序列) 列表 集合 元素 字符串 字典 序列遍历操作

python基础专栏 python基础(第五期) 文章目录 python基础(第五期)数据容器一、列表1、列表的定义2、列表的下标索引 3、列表的(添加)方法3.1 列表的查询方法3.2 修改特定下标索引的值3.3 列表指定位置插入元素3.3 列表指定元素的追…

自动驾驶高效预训练--降低落地成本的新思路(AD-PT)

自动驾驶高效预训练--降低落地成本的新思路 1. 之前的方法2. 主要工作——面向自动驾驶的点云预训练2.1. 数据准备 出发点:通过预训练的方式,可以利用大量无标注数据进一步提升3D检测 https://arxiv.org/pdf/2306.00612.pdf 1. 之前的方法 1.基于对比学…

setTimeout和setImmediate以及process.nextTick的区别?

目录 前言 setTimeout 特性和用法 setImmediate 特性和用法 process.nextTick 特性和用法 区别和示例 总结 在Node.js中,setTimeout、setImmediate和process.nextTick是用于调度异步操作的三种不同机制。它们之间的区别在于事件循环中的执行顺序和优先级。…

django安装数据库

使用pip安装django pip3 install django注意我使用的是python3所以用pip3安装,如需安装指定版本 django ..* 检测是否安装成功,不报错,则安装成功 # python3 # import django下边这是报错的 django迁移数据库 再mysql中简历数据库 CREATE DATABA…

COOHOM通过采用亚马逊云科“专库专用”的方式,为云原生的构建提供稳定的数据支撑

全球化浪潮下,面对全球化业务发展带来的新需求与新挑战,越来越多的企业开启了云原生构建旅程,以推动业务系统快速迭代,为国际业务的拓展打下坚实的基础。COOHOM是杭州群核信息技术有限公司旗下的国际化品牌。为全球企业和个人提供…

au怎么把音乐和人声单独分离出来?分享最简单的方法!

把音乐和人声单独分离,对于音频处理和后期制作来说,可以方便地对人声或音乐进行单独的处理和编辑,以达到更好的效果。下面介绍了怎么把利用AU音乐和人声单独分离出来的详细步骤。 一、AU 1、把自己需要处理的那首歌copy到桌面,再…

npm install:sill idealTree buildDeps

执行npm install,卡在 sill idealTree buildDeps PS D:\workspace-groovy\attendance-india-web> npm install -g cnpm --registryhttps://registry.npm.taobao.org [..................] / idealTree:node_global: sill idealTree buildDeps[.................…

BUUCTF 隐藏的钥匙 1

BUUCTF:https://buuoj.cn/challenges 题目描述: 路飞一行人千辛万苦来到了伟大航道的终点,找到了传说中的One piece,但是需要钥匙才能打开One Piece大门,钥匙就隐藏在下面的图片中,聪明的你能帮路飞拿到钥匙&#xff…

视频编辑软件Corel VideoStudio 会声会影2024中文剪辑使用教程

会声会影(Corel VideoStudio)2024为加拿大Corel公司发布的一款功能丰富的视频编辑软件。会声会影2023简单易用,具有史无前例的强大功能,拖放式标题、转场、覆叠和滤镜,色彩分级、动态分屏视频和新增强的遮罩创建器&…

​软考-高级-信息系统项目管理师教程 第四版【第15章-项目风险管理-思维导图】​

软考-高级-信息系统项目管理师教程 第四版【第15章-项目风险管理-思维导图】 课本里章节里所有蓝色字体的思维导图

多线程JUC 第2季 多线程的原子性

一 多线程原子性 1.1 基本数据类型原子 atomicInteger, atomicLong,atomicBoolean 代码 package com.ljf.thread.atomic;import java.util.concurrent.CountDownLatch; import java.util.concurrent.atomic.AtomicInteger;class MyNumber {AtomicInt…

YoloV5训练V3Det数据集实战

摘要 V3Det:一个庞大的词汇视觉检测数据集,在大量真实世界图像上具有精确注释的边界框,其包含13029个类别中的245k个图像(比LVIS大10倍),数据集已经开源! 图片的数量比COCO多一些,…

【Redis】hash数据类型-常用命令

文章目录 前置知识常用命令HSETHGETHEXISTSHDELHKEYSHVALSHGETALLHMGET关于HMSETHLENHSETNXHINCRBYHINCRBYFLOAT 命令小结 前置知识 redis自身就是键值对结构了,哈希类型是指值本⾝⼜是⼀个键值对结构,形如key"key",value{{field1…

哪一波最容易亏钱,昂首资本这样讲

有交易者咨询anzo capital昂首资本,按照波浪理论最容易亏钱是在第几波,通过调查得知80%的错误发生在第四波。所以对哪一波最容易亏钱,很有可能就是第四波。当然了如果能准确的判断第四波时,也可能获得相当丰厚的利润。 第四波通…

8 mysql中的索引2

一、索引的种类 1、 B树索引 1.**每个索引就是一颗B树**,二级索引不包含行记录的全部数据 2.叶子节点除了包含键值以外,每个叶子节点中的索引行中还包含了一个书签( bookmark) 3.B平衡树是一颗查找树,B树的叶子节点用来放数据的,并且所有叶…

仿mudou库one thread one loop式并发服务器

目录 1.实现目标 2.HTTP服务器 实现高性能服务器-Reactor模型 模块划分 SERVER模块: HTTP协议模块: 3.项目中的子功能 秒级定时任务实现 时间轮实现 正则库的简单使用 通⽤类型any类型的实现 4.SERVER服务器实现 日志宏的封装 缓冲区Buffer…

软件设计不是CRUD(4):耦合度的强弱(上)

在讨论如何稳定系统内各模块的分层设计前, 本文先介绍一下目前判断各模块间耦合度强弱的度量方式。这些度量方式,在实际工作中读者应该都涉及过,只是可能没有去做详细的划分归类。 1、模块间耦合强度度量 模块间的耦合强度分为以下几种&…

小仙女必备,1分钟就能做出精美的电子相册

不知道大家有没有这样的困惑,手机里的照片太多,长久以来很多照片都容易被忘记。这个时候我们就可以将照片制作成电子相册,方便我们随时回味那些照片里的故事。如何制作呢? 制作电子相册只需要一个简单实用的制作工具就可以轻松完成…