Pytorch线性模型(Linear Model)

基本步骤

①首先准备好数据集(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 pltx_data = [1.0,2.0,3.0]
y_data = [2.0,4.0,6.0]def forword(x):return x*wdef 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 = 0for 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_valprint('\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.mzph.cn/bicheng/18179.shtml

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

相关文章

开封旅游三天两夜旅游攻略

开封是一座历史悠久的城市,有着丰富的文化遗产和美食。以下是一个三天两夜的开封旅游攻略,供你参考: 一、行程安排 第一天: 上午:抵达开封,前往酒店办理入住手续。随后参观开封博物馆,了解开封…

【Python安全攻防】【网络安全】一、常见被动信息搜集手段

一、IP查询 原理:通过目标URL查询目标的IP地址。 所需库:socket Python代码示例: import socketip socket.gethostbyname(www.163.com) print(ip)上述代码中,使用gethostbyname函数。该函数位于Python内置的socket库中&#xf…

广场舞团|基于SprinBoot+vue的广场舞团系统(源码+数据库+文档)

广场舞团系统 目录 基于SprinBootvue的广场舞团系统 一、前言 二、系统设计 三、系统功能设计 1 系统功能模块 2 后台登录模块 5.2.1管理员功能模块 5.2.2社团功能模块 5.2.3用户功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推…

Pytorch-06 使用GPU加速计算

要在PyTorch中使用GPU加速计算,需要将模型和数据移动到GPU上进行处理。以下是上一节演示修改后的示例代码,展示了如何在训练过程中利用GPU加速计算: import torch import torch.nn as nn import torch.optim as optim import time# 检查GPU是…

2024-05-28 问AI: 在深度学习中,什么是反向随机失活?

文心一言 在深度学习中,反向随机失活(Inverse Randomized Elimination,通常称为Dropout)是一种在训练深度神经网络时常用的正则化技术,用于防止过拟合。该技术通过随机将神经网络中的一部分神经元“失活”或“丢弃”来…

深度剖析:为什么 Spring 和 IDEA 都不推荐使用 @Autowired 注解

目录 依赖注入简介 Autowired 注解的优缺点 Spring 和 IDEA 不推荐使用 Autowired 的原因 构造器注入的优势 Autowired 注解的局限性 可读性和可测试性的问题 推荐的替代方案 构造器注入 Setter 注入 Java Config Bean 注解 项目示例:Autowired vs 构造器…

Android 项目Gradle文件讲解(Groovy和Kotlin)

Android 项目Gradle文件讲解(Groovy和Kotlin) 前言正文一、Gradle的作用二、Gradle的种类① 工程build.gradle② 项目build.gradle③ settings.gradle④ gradle.properties⑤ gradle-wrapper.properties⑥ local.properties 三、Groovy和Kotlin的语言对比…

装饰模式:鸡腿堡

文章目录 UML类图目录结构Humburger.javaChickenBurger.javaCondiment.javaChuilli.javaLettuce.javaTest.java深度理解test怎么写 UML类图 目录结构 我们从指向最多的开始写 Humburger.java package zsms;public abstract class Humburger {protected String name;public S…

【接口自动化_05课_Pytest接口自动化简单封装与Logging应用】

一、关键字驱动--设计框架的常用的思路 封装的作用:在编程中,封装一个方法(函数)主要有以下几个作用:1. **代码重用**:通过封装重复使用的代码到一个方法中,你可以在多个地方调用这个方法而不是…

C++贪心算法(3)

整数区间 #include<bits/stdc.h> using namespace std; int main() {int n;cin>>n;int a[110][10]{0};for(int i0;i<n;i){cin>>a[i][1]>>a[i][2];}int cnt[110]{0};int mi99999;int mii-1;bool f[110]{false,false,false,false,false,false,false,…

debian让dotnet 程序以守护进程方式运行,如果意外退出主动开启

创建服务文件: 打开一个新的.service文件在/etc/systemd/system/目录下&#xff0c;例如myapp.service sudo nano /etc/systemd/system/myapp.service编辑服务文件: 添加以下内容到myapp.service文件&#xff0c;确保修改ExecStart以指向你的.NET Core应用程序的可执行文件&am…

JVM-调优之-高内存占用问题排查

排查思路 1&#xff09;检查jvm内存的分配情况 2&#xff09;检查jvm的gc情况 3&#xff09; 找出占用量比较大的对象 第一步&#xff1a;jmap -heap PID 查看jvm内存使用情况 jmap -heap 2525 可以看到老年代年轻代等其他内存区域内存使用率百分比 第二步&#xff1a;jsta…

Golang:使用roylee0704/gron实现定时任务

可以使用roylee0704/gron实现定时任务 文档 https://github.com/roylee0704/gronhttps://pkg.go.dev/github.com/roylee0704/gron 安装 go get github.com/roylee0704/gron代码示例 package mainimport ("fmt""time""github.com/roylee0704/gron…

如何用分立器件设计一个过流保护电路

过流保护电路是指当后级负载电流过大或者发生短路时&#xff0c;自动切断电源与后级负载&#xff0c;从而防止大电流损害电源电路&#xff0c;过流保护又叫OCP。 常见的过流保护电路有保险丝过流保护&#xff0c;集成的过流保护芯片&#xff0c;还有这种分立器件搭建的过流保护…

Browserify:将 Node.js 模块转换为浏览器可用的 JavaScript

什么是 Browserify&#xff1f; Browserify 是一个 JavaScript 工具&#xff0c;用于将 Node.js 模块转换为在浏览器环境中可用的单个 JavaScript 文件。通过 Browserify&#xff0c;您可以使用 require() 函数引入其他模块&#xff0c;就像在 Node.js 中一样&#xff0c;而不…

详解 Scala 的隐式转换

当编译器第一次编译失败的时候&#xff0c;会在当前的环境中查找能让代码编译通过的方法&#xff0c;用于将某个类型进行转换&#xff0c;实现二次编译通过 一、隐式函数 隐式函数可以在不修改任何代码的情况下&#xff0c;扩展某个类的功能 /**声明语法&#xff1a;implicit d…

Ubuntu上安装Maven

在Ubuntu上安装Maven的步骤如下&#xff1a; 更新包索引&#xff1a; sudo apt update 安装Maven&#xff1a; sudo apt install maven 验证安装是否成功&#xff1a; mvn -version 以上步骤将会安装Maven并添加到系统路径中&#xff0c;你可以通过运行mvn -version来验…

TIM输出比较

一、OC&#xff08;Output Compare&#xff09;输出比较 1、输出比较可以通过比较CNT&#xff08;计数器&#xff09;与CCR&#xff08;捕获/比较寄存器&#xff09;寄存器值的关系&#xff0c;来对输出电平进行置1、置0或翻转的操作&#xff0c;用于输出一定频率和占空比的PW…

微信小程序连接阿里云快速入门【物联网】

一、前言 1.1 项目背景 随着5G的逐渐普及&#xff0c;万物互联的浪潮已经席卷而来。在万物互联的场景下&#xff0c;如何实现设备之间的互联互通&#xff0c;成为了一个亟待解决的问题。 微信小程序作为一款轻量级的小程序开发框架&#xff0c;以其简洁的语法和丰富的组件库…

08、SpringBoot 源码分析 - 自动配置深度分析一

SpringBoot 源码分析 - 自动配置深度分析一 refresh和自动配置大致流程如何自动配置SpringBootApplication注解EnableAutoConfiguration注解AutoConfigurationImportSelector自动配置导入选择器DeferredImportSelectorHandler的handleDeferredImportSelectorGroupingHandler的r…