Linear Model 线性模型

news2024/12/25 8:52:09

文章目录

    • 1、Linear Model 线性模型
      • 1.1 问题引入
      • 1.2 选择模型
      • 1.3 损失 Loss
      • 1.4 均方误差 MSE
      • 1.5 代码
      • 1.6 更换模型

1、Linear Model 线性模型

B站视频教程传送门:PyTorch深度学习实践 - 线性模型

1.1 问题引入

在这里插入图片描述

假设学生在期末考试中得到y分,如果他们花了x小时学习PyTorch教程,如果我学习4个小时,成绩会是多少?

在这里插入图片描述

监督学习:可参考 机器学习两种方法——监督学习和无监督学习(通俗理解)

1.2 选择模型

在这里插入图片描述

To simplify the model 简化该模型

在这里插入图片描述

参数 w 为权重,是一个随机值,不同的 w 会导致结果的不同!

在这里插入图片描述

1.3 损失 Loss

在这里插入图片描述

当我们 W 从 0、1、2、… 一直取下去,观察 Loss 的变化情况:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

我们发现:Loss (w=2) 均为 0 即没有损失,说明这是最理想状态。

1.4 均方误差 MSE

在实际情况中,我们往往习惯用 MSE(平均平方误差)来代替Loss(损失值),可以更为直观的表现出来。

在这里插入图片描述

在这里插入图片描述

MSE:机器学习中的预测评价指标MSE、RMSE、MAE、MAPE、SMAPE

1.5 代码

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 forward(x):
    return x * w


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


w_list = []
mse_list = []
for w in np.arange(0.0, 4.1, 0.1):
    print("w=", round(w, 2))
    l_sum = 0
    for x_val, y_val in zip(x_data, y_data):
        y_pred_val = forward(x_val)
        loss_val = loss(x_val, y_val)
        l_sum += loss_val
        print('\t', round(x_val, 2), round(y_val, 2), round(y_pred_val, 2), round(loss_val, 2))
    print('MSE=', l_sum / 3)
    w_list.append(w)
    mse_list.append(l_sum / 3)

plt.plot(w_list, mse_list)
plt.ylabel('MSE')
plt.xlabel('W')
plt.show()
w= 0.0
	 1.0 2.0 0.0 4.0
	 2.0 4.0 0.0 16.0
	 3.0 6.0 0.0 36.0
MSE= 18.666666666666668
w= 0.1
	 1.0 2.0 0.1 3.61
	 2.0 4.0 0.2 14.44
	 3.0 6.0 0.3 32.49
MSE= 16.846666666666668
w= 0.2
	 1.0 2.0 0.2 3.24
	 2.0 4.0 0.4 12.96
	 3.0 6.0 0.6 29.16
MSE= 15.120000000000003
...

在这里插入图片描述

可以发现 当 𝜔=2 时,MSE 将是最小的。

1.6 更换模型

在一开始,我们使用的是 y ^ = x ∗ w \hat {y} = x * w y^=xw ,如果我们想要加个截距b:即 y ^ = x ∗ w + b \hat {y} = x * w + b y^=xw+b ,结果又会怎样?

  • 绘制三维图形:https://matplotlib.org/stable/tutorials/toolkits/mplot3d.html

  • np.meshgrid()矢量化计算:https://numpy.org/doc/stable/reference/generated/numpy.meshgrid.html#numpy.meshgrid

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

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


def forward(x):
    return x * w + b


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


mse_list = []
W = np.arange(0.0, 4.1, 0.1)
B = np.arange(-2.0, 2.1, 0.1)
[w, b] = np.meshgrid(W, B)

l_sum = 0
for x_val, y_val in zip(x_data, y_data):
    y_pred_val = forward(x_val)
    print(y_pred_val)
    loss_val = loss(x_val, y_val)
    l_sum += loss_val

fig = plt.figure()
ax = Axes3D(fig)

ax.set_xlabel("w")
ax.set_ylabel("b")
ax.text(0.2, 2, 43, "Cost Value")

surf = ax.plot_surface(w, b, l_sum / 3, cmap=plt.get_cmap('rainbow'))
fig.colorbar(surf, shrink=0.5, aspect=5)
plt.show()
[[-2.  -1.9 -1.8 ...  1.8  1.9  2. ]
 [-1.9 -1.8 -1.7 ...  1.9  2.   2.1]
 [-1.8 -1.7 -1.6 ...  2.   2.1  2.2]
 ...
 [ 1.8  1.9  2.  ...  5.6  5.7  5.8]
 [ 1.9  2.   2.1 ...  5.7  5.8  5.9]
 [ 2.   2.1  2.2 ...  5.8  5.9  6. ]]
[[-2.  -1.8 -1.6 ...  5.6  5.8  6. ]
 [-1.9 -1.7 -1.5 ...  5.7  5.9  6.1]
 [-1.8 -1.6 -1.4 ...  5.8  6.   6.2]
 ...
 [ 1.8  2.   2.2 ...  9.4  9.6  9.8]
 [ 1.9  2.1  2.3 ...  9.5  9.7  9.9]
 [ 2.   2.2  2.4 ...  9.6  9.8 10. ]]
[[-2.  -1.7 -1.4 ...  9.4  9.7 10. ]
 [-1.9 -1.6 -1.3 ...  9.5  9.8 10.1]
 [-1.8 -1.5 -1.2 ...  9.6  9.9 10.2]
 ...
 [ 1.8  2.1  2.4 ... 13.2 13.5 13.8]
 [ 1.9  2.2  2.5 ... 13.3 13.6 13.9]
 [ 2.   2.3  2.6 ... 13.4 13.7 14. ]]

在这里插入图片描述

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

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

相关文章

【正点原子FPGA连载】第二十五章 双路高速AD实验 摘自【正点原子】DFZU2EG/4EV MPSoC 之FPGA开发指南V1.0

1)实验平台:正点原子MPSoC开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id692450874670 3)全套实验源码手册视频下载地址: http://www.openedv.com/thread-340252-1-1.html 第二十五章 双路…

干货 | 读懂这篇文,玩游戏还会卡顿?

玩游戏的时候最怕的就是卡顿。排位赛的紧急关头,明明马上就能上一段位,却因为卡顿导致给对方送人头。还把对手送上了王者。引起队友骂声一片。作为测试工程师的你,可以忍? 卡顿测试也是专项测试里的一种,更多精彩测试内…

【学习笔记】深度学习入门:基于Python的理论与实现-Python入门与感知机

CONTENTS一、Python入门1.1 NumPy1.2 Matplotlib二、感知机2.1 感知机是什么2.2 简单逻辑电路2.3 感知机的实现2.4 感知机的局限性2.5 多层感知机一、Python入门 1.1 NumPy 在深度学习的实现中,经常出现数组和矩阵的计算。NumPy的数组类(numpy.array&a…

C语言函数调用的过程图解深入剖析

希望是美好的,也许是人间至善,而美好的事物永不消逝。——《肖申克的救赎》 目录 1、什么是函数栈帧? 2、理解函数栈帧能解决什么问题 3、函数栈帧是什么 3.1什么是栈? 3.2认识寄存器和汇编指令 4、函数调用的整个过程 5、…

LBA逻辑区块地址

现在很多硬盘采用同密度盘片,意味着内外磁道上的扇区数量不同,扇区数量增加,容量增加,3D很难定位寻址,出现了新的寻址模式:LBA(Logical Block Addressing)。在LBA地址中,地址不再表示实际硬盘的…

Mysql 并发多版本控制MVCC

什么是MVCC MVCC,全称Multi-Version Concurrency Control,即多版本并发控制。MVCC是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问,在编程语言中实现事务内存。 一般情况下我们使用mysql数据库的…

Prometheus 采集vCenter7监控数据

前提要求 安装docker,docker-compose创建vmware_exporter目录 mkdir -p /vmware_exporter 创建基于docker部署vmware_exporter脚本 VSPHERE_HOST: "vCenter 管理地址" VSPHERE_IGNORE_SSL: "True" VSPHERE_USER: "administratorvsphere…

[附源码]计算机毕业设计springboot求职招聘网站

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

信创平台:查询CPU,内存等命令

信创平台:海光、鲲鹏服务器查询CPU,内存等命令 #1、查看操作系统(统信操作系统) 海光查询操作系统: cat /etc/os-release查看操作系统 cat /etc/os-version查看操作系统版本 鲲鹏查询操作系统:cat /etc/system-release Kylin Linux Adva…

Python图像处理【3】Python图像处理库应用

Python图像处理库应用0. 前言1. 将 RGB 图像转换为灰度图像算法1.1 算法原理3.2 算法实现2. 使用 PIL 库计算图像差异2.1 算法原理2.2 算法实现3. 使用 Scikit-image 转换图像色彩空间3.1 将 RGB 图像转换至 HSV 色彩空间3.2 将 RGB 图像转换至 YUV 色彩空间4. 用 OpenCV 调整图…

html学习笔记

1.在idea里右键创建html文件 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> </head> <body></body> </html>在谷歌浏览器中输入chrome://version可以看…

【学习笔记】深度学习入门:基于Python的理论与实现-误差反向传播法

CONTENTS五、误差反向传播法5.1 计算图5.2 链式法则5.3 反向传播5.4 简单层的实现5.5 激活函数层的实现5.6 Affine/Softmax层的实现5.7 误差反向传播法的实现五、误差反向传播法 5.1 计算图 先引入一个很简单的问题&#xff1a;在超市买了222个100100100元一个的苹果&#xf…

[附源码]JAVA毕业设计个人饮食营养管理信息系统(系统+LW)

[附源码]JAVA毕业设计个人饮食营养管理信息系统&#xff08;系统LW&#xff09; 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 …

云原生|kubernetes|kubernetes集群使用私有镜像仓库拉取镜像(harbor或者官方的registry私有镜像仓库)

前言&#xff1a; 在实际的生产中&#xff0c;我们可能会有许多的由开发制作的docker镜像&#xff0c;这也就造成使用这些镜像需要打包成tar文件&#xff0c;然后上传到服务器内然后在导入并使用&#xff0c;但&#xff0c;kubernetes节点很多&#xff0c;有时候并不是明确的要…

13.前端笔记-CSS-盒子样式应用(圆角、阴影)

1、圆角边框 border-radius属性&#xff0c;用于设置元素的外边框圆角 原理&#xff1a;(椭)圆和矩形的两条边相切&#xff08;圆的半径就是length&#xff09;&#xff0c;形成圆角效果 属性&#xff1a; border-top-left-radius;左上 border-top-right-radius:右上 border…

B-神经网络模型复杂度分析

B-神经网络模型复杂度分析 前言一&#xff0c;模型计算量分析 卷积层 FLOPs 计算全连接层的 FLOPs 计算二&#xff0c;模型参数量分析 卷积层参数量BN 层参数量全连接层参数量三&#xff0c;模型内存访问代价计算 卷积层 MAC 计算四&#xff0c;一些概念 双精度、单精度和半精…

数苹果-第12届蓝桥杯Scratch选拔赛真题精选

[导读]&#xff1a;超平老师计划推出Scratch蓝桥杯真题解析100讲&#xff0c;这是超平老师解读Scratch蓝桥真题系列的第91讲。 蓝桥杯选拔赛每一届都要举行4~5次&#xff0c;和省赛、国赛相比&#xff0c;题目要简单不少&#xff0c;再加上篇幅有限&#xff0c;因此我精挑细选…

【Android】Fragment使用

使用Fragment 我们可以把页面结构划分成几块&#xff0c;每块使用一个Fragment来管理。这样我们可以更加方便的在运行过程中动态地更新Activity中的用户界面&#xff0c;日后迭代更新、维护也是更加方便。 Fragment并不能单独使用&#xff0c;他需要嵌套在Activity 中使用&…

Redis最佳实践(上)

引言 尽管 redis 是一款非常优秀的 NoSQL 数据库&#xff0c;但更重要的是&#xff0c;作为使用者我们应该学会在不同的场景中如何更好的使用它&#xff0c;更大的发挥它的价值。主要可以从这四个方面进行优化&#xff1a;Redis键值设计、批处理优化、服务端优化、集群配置优化…

某些设置由你的组织来管理

今天莫名其妙Windows更新出现&#xff1a;*某些设置由你的组织来管理 我们来看看如何恢复吧。 根据上面的图片我们可以知道&#xff0c; 可查看配置的更新策略&#xff1a; 可以看到设备设置的策略有下面几个&#xff1a; 解决方案 这个时候我们就要进入设置更改那些策略即…