Pytorch线性模型(Linear Model)

news2024/9/19 22:19:23

基本步骤

①首先准备好数据集(DataSet)

②模型的选择或者设计(Model)

③进行训练(Train)大部分模型都需要训练,有些不需要。这一步后我们会确定不同特征的权重

④推理(inferring)

1,2,3hours会有一个结果2,4,6points。这个就是训练过程,把x和y都给模型,让他自己学。5hours这个没有一个对应的y,这个就是我们的预测过程(相当于上面的题目学完了后,现在写这个题,看能不能写对)。

对应的就是下图,表格中的就是DataSet,给机器学习后,传入4hours(Input)最后得到一个预测结果Output。

数据集DataSet

当然,其实在训练表中这个4hours其实可以为testSet测试集。在训练过程中这个对应的y看不见(引用我一位师兄的话,这个其实就是小测验,最后需要我们预测的那个过程才是期末考试)。因为不能训练完就直接用,因为这个太不够准确,需要test进行测试。

所以我们通常在训练的过程中,通常不会把我们所有的DataSet全部设置为训练集,还有一部分设测试集。

接下来有一个很大的问题就是数据集,如果我们给定的数据集很片面,不够完全,我们可能在训练后出现过拟合的现象(只认识这些训练的内容),我们希望最终可以有一个比较泛化的能力,在遇到没见过的图也可以识别我们学习的内容(也就是我们学习时常说的掌握方法,举一反三)。

设计模型(Design Model)

什么是一个比较好的模型?

先用线性模型先试试,因为这个比较基本且简单。如果效果不好再换其他模型。对于我们上面表格中的几个数据,我们看出,其实比较符合线性的规则。

上面这条线是我们真实值的线。

 由于我们给的数据比较简单,但是现实是很少会出现这样的情况的。所以通常来说会线随机预测一个w(权重weight),然后通过在1,2,3hours对应的points与真实值进行对比,evaluate Model Error 。我们就把这个评估模型称为损失loss。

如果我们现在假设这个w为3,按照我们loss的公式。  分别计算出loss值,最后测得平均的loss值。

当然你也可以假设不同的w,看看哪一种的loss最小。

这个是两个可能会使用的公式。

通过计算得到这样的结果,当然通常很难算出0这个值,所以在找w的时候可以使用穷举法。也就是如下图,把在0-4之间的每个值都算一下,找到最小的loss。

但是我们无法在实数域中把所有的值都找出来,所以实现上图采用的代码如下。 

import numpy as np
import matplotlib.pyplot as plt

x_data = [1.0,2.0,3.0]
y_data = [2.0,4.0,6.0]

def forword(x):
    return x*w

def loss(x,y):
    y_pred = forword(x)
    return (y_pred-y)*(y_pred-y)

w_list = []
mse_lis = []

for w in np.arange(0.0,4.0,0.1):
    print('w',w)
    l_sum = 0
    for x_val,y_val in zip(x_data,y_data):
        y_pred_val = forword(x_val)
        loss_val = loss(x_val,y_val)
        l_sum+=loss_val
        print('\t',x_val,y_val,y_pred_val,loss_val)
    print('MSE=',l_sum/3)
    w_list.append(w)
    mse_lis.append(l_sum/3)

运行结果为:

 画图:

plt.plot(w_list,mse_lis)
plt.ylabel('Lose')
plt.xlabel('W')
plt.show

 

但是这里需要提一下,通常我们的横坐标不是w,我们训练通常让横坐标为epoch(训练几轮)

下面这张图是昨天刚训练完的一个结果,注意在训练过程中一定要注意存盘,因为往往训练时间很长,如果出错就要重新训练,所以我们要记住定时存盘。还有要注意可视化问题,希望在训练过程中得到的结果可视化出来,让我们更好去判断结果。

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

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

相关文章

就业班 第三阶段(ELK) 2401--5.20 day1 ELK 企业实战 ES+head+kibana+logstash部署(最大集群)

ELKkafkafilebeat企业内部日志分析系统 1、组件介绍 1、Elasticsearch: 是一个基于Lucene的搜索服务器。提供搜集、分析、存储数据三大功能。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的&#xff…

学习单向链表带哨兵demo

一、定义 在计算机科学中,链表是数据元素的线性集合,其每个元素都指向下一个元素,元素存储上并不连续。 1.可以分三类为 单向链表,每个元素只知道其下一个元素是谁 双向链表,每个元素知道其上一个元素和下一个元素 …

mySql从入门到入土

基础篇 在cmd中使用MYSQL的相关指令: net start mysql // 启动mysql服务 net stop mysql // 停止mysql服务 mysql -uroot -p1234//登录MYSQL(-u为用户名-p为密码) //登录参数 mysql -u用户名 -p密码 -h要连接的mysql服务器的ip地址(默认1…

记一次安卓“Low on memory“崩溃问题

前言 最近再调人脸识别算法相关demo,发现调试期间总是偶发性崩溃,捕获不到异常的那种,看日志发现原因是Low on memory,一开始还疑惑 App内存不够应该是OOM啊,怎么会出现这种问题,百思不得其解,直到我打开了 Android s…

Git 仓库中 -- 代码冲突产生、定位、解决的流程

目录 前置知识1 工具环境2 冲突的产生2.1 仓库中的源代码2.2 人员 A 首先更改代码2.3 人员 B 更改代码,产生冲突2.3.1 第一次错误提示:2.3.2 第二次错误提示: 3 查看冲突4 手动解决冲突4.1 方式一4.2 方式二(tortoisegit&#xff…

Vitis HLS 学习笔记--控制驱动任务示例

目录 1. 简介 2. 代码解析 2.1 kernel 代码回顾 2.2 功能分析 2.3 查看综合报告 2.4 查看 Schedule Viewer 2.5 查看 Dataflow Viewer 3. Vitis IDE的关键设置 3.1 加载数据文件 3.2 设置 Flow Target 3.3 配置 fifo 深度 4. 总结 1. 简介 本文对《Vitis HLS 学习…

CSAPP(datalab)解析

howManyBits /* howManyBits - 返回用二进制补码表示x所需的最小位数* 示例: howManyBits(12) 5* howManyBits(298) 10* howManyBits(-5) 4* howManyBits(0) 1* howManyBits(-1) 1* howManyBits(0x80000000) …

【Linux】TCP协议【上】{协议段属性:源端口号/目的端口号/序号/确认序号/窗口大小/紧急指针/标记位}

文章目录 1.引入2.协议段格式4位首部长度16位窗口大小32位序号思考三个问题【demo】标记位URG: 紧急指针是否有效提升某报文被处理优先级【0表示不设置1表示设置】ACK: 确认号是否有效PSH: 提示接收端应用程序立刻从TCP缓冲区把数据读走RST: 对方要求重新建立连接; 我们把携带R…

【C++】详解AVL树——平衡二叉搜索树

个人主页:东洛的克莱斯韦克-CSDN博客 祝福语:愿你拥抱自由的风 目录 二叉搜索树 AVL树概述 平衡因子 旋转情况分类 左单旋 右单旋 左右双旋 右左双旋 AVL树节点设计 AVL树设计 详解单旋 左单旋 右单旋 详解双旋 左右双旋 平衡因子情况如…

远程工作的数据安全挑战和解决策略

随着远程工作的普及,数据安全面临了前所未有的挑战。企业在应对这些挑战时,必须采取切实有效的策略来保护敏感信息。以下是远程工作数据安全的主要挑战和相应的解决策略: 数据安全挑战 设备丢失或被盗:员工在外工作时&#xff0c…

从 0 开始本地部署大语言模型

1、准备 ● Ollama:ollama.com ● Docker:https://docs.openwebui.com/ 2、下载 Ollama 进入 Ollama 官网,点击 Download 。 下载完成后,双击安装,什么都不需要勾选,直接下一步即可。安装完成&#xf…

算法之堆排序

堆排序是一种基于比较的排序算法,通过构建二叉堆(Binary Heap),可以利用堆的性质进行高效的排序。二叉堆是一个完全二叉树,可以有最大堆和最小堆两种形式。在最大堆中,父节点的值总是大于或等于其子节点的值…

【TB作品】stm32单片机读取DS2401程序

DS2401是由Analog Devices公司生产的一种硅序列号芯片,它提供了一个绝对唯一的64位ROM识别码,用于确保可追溯性。以下是对DS2401器件的分析: 特点和优势: 唯一性:每个DS2401芯片都有一个独一无二的64位注册码&#x…

Redis机制-Redis缓存穿透,击穿,雪崩理解等问题的理解和学习

目录 一 缓存穿透问题 二 缓存击穿问题 三 缓存雪崩问题: 图1 正常的Redis缓存流程 一 缓存穿透问题 我们都知道Redis是一个存储键值对的非关系型数据库,那么当用户进行查询的时候,势必会从前端发起请求,从而数据从Redis缓存…

MySQL笔记第三天(从小白到入门)

文章目录 MySQL笔记SQL语言介绍数据库系统关系型数据库非关系型数据库SQL和数据库系统的关系数据库系统架构 MySQL的介绍概念MySQL的版本 MySQL的DDL操作-重点基本数据库操作基本表操作 MySQL的DML操作-重点insert-插入数据update-更新数据delete-删除数据 MySQL的约束-了解概述…

RabbitMQ .NET

setup rabbitmq docker run --namerabbit -p 15672:15672 -p 5672:5672 -e RABBITMQ_DEFAULT_USERadmin -e RABBITMQ_DEFAULT_PASSxxx -d rabbitmq:management ip:15672 login nuget RabbitMQ.Client Send //1.1.实例化连接工厂 var factory new ConnectionFactory() …

WordPress搭建流程

1. 简介 WordPress 是一个 PHP 编写的网站制作平台。WordPress 本身免费,并且拥有众多的主题可以使用,适合用于搭建个人博客、公司官网、独立站等。 2. 环境准备 2.1 WordPress 下载 WordPress 可以在 Worpress中文官网 下载(如果后续要将后台调成中文的话,一定要从中文…

虚拟局域网(VLAN)

关键词:veth、vlan、bridge、iptables、nat、tcpdump、icmp、cidr、arp、路由表、计算机网络协议栈 前言 在过去的几十年里,互联网发展得非常快。许多新兴技术迅速崛起,也有不少曾经的主流技术被淘汰。然而,有些技术因为其基础性…

sqlserver 创建表,列及表,列描述

-- 创建表 CREATE TABLE Employees (EmployeeID INT PRIMARY KEY,EmployeeName NVARCHAR(100),EmployeeEmail NVARCHAR(100) );-- 为表添加描述 EXEC sp_addextendedproperty name NMS_Description, value N员工信息表, level0type NSchema, level0name dbo, level1type N…

栈和队列的经典例题,LeetCode 括号匹配问题;栈实现队列;队列实现栈;队列带环问题

1.前序 又有很久没有更新文章了&#xff0c;这次带你们手撕几道基础题&#xff1b;真的就和康纳吃饭一样简单&#xff01;&#xff01;&#xff01; 如果还不会队列和栈的可以去看看之前写的博客&#xff1b; 栈的实现 队列概念以及实现 <- 快速传送 目录 1.前序 …