刘二大人PyTorch深度学习实践第二讲笔记

news/2025/11/25 17:29:20/文章来源:https://www.cnblogs.com/rainkogasa/p/19269322

碎碎念:
开个新坑,系统学一遍深度学习好做毕设,能到河工大挺激动的,赶紧给刘二大人投自荐简历,但是已读不回,还是自己太菜了........不过已经到河工大了挺好的,梦校

第二讲

线性模型

image-20251125141224993

image-20251125141255872

可能x(输入)到y(答案)是一个线性模型,但是w或者其他的权重值不确定,所以机器随机选取权重数值,看看哪个公式得到的预期答案和真实答案偏差较小,就是训练的最优模型

评价方法MSE:(假设x到y的映射就是简单的y=x*w)

image-20251125141827375

(模型预期值-真实值)的平方再平均,就是MSE(均方误差)

还是假设y=w*x,找出最佳权重:

import numpy as np
import matplotlib.pyplot as pltx_data=[1.0,2.0,3.0]
y_data=[3.0,6.0,9.0]def forward(x):return x*wdef loss(x,y):y_pred=forward(x)return (y_pred-y)*(y_pred-y)w_list=[]
mse_list=[]for w in np.arange(0.0,4.1,0.1):print("w=",w)l_sum=0for 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_valprint('\t',x_val,y_val,y_pred_val,loss_val)print('MSE = ',l_sum/3)w_list.append(w)mse_list.append(l_sum/3)
plt.plot(w_list,mse_list)
plt.ylabel('Loss')
plt.xlabel('w')
plt.show()

结果:

Figure_1

再试一个y=w*x+b的

# import numpy as np
# import matplotlib.pyplot as plt
#
# x_data=[1.0,2.0,3.0]
# y_data=[3.0,6.0,9.0]
#
#
# def forward(x):
#     return x*w
#
# def loss(x,y):
#     y_pred=forward(x)
#     return (y_pred-y)*(y_pred-y)
#
# w_list=[]
# mse_list=[]
#
# for w in np.arange(0.0,4.1,0.1):
#     print("w=",w)
#     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',x_val,y_val,y_pred_val,loss_val)
#     print('MSE = ',l_sum/3)
#     w_list.append(w)
#     mse_list.append(l_sum/3)
# plt.plot(w_list,mse_list)
# plt.ylabel('Loss')
# plt.xlabel('w')
# plt.show()import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3Dx_data=[1.0,2.0,3.0]
y_data=[4.0,7.0,10.0]
def forward(x):return x*w+b
def loss(x,y):y_pred=forward(x)return (y_pred-y)*(y_pred-y)
w_list=[]
b_list=[]
mse_list=[]for w in np.arange(0.0,4.1,0.1):for b in np.arange(0.0,4.1,0.1):l_sum=0for 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',x_val,y_val,y_pred_val,loss_val)# print('MSE = ',l_sum/3)w_list.append(w)b_list.append(b)mse_list.append(l_sum/3)# 转换为numpy数组并重塑为网格格式
w_array = np.array(w_list)
b_array = np.array(b_list)
mse_array = np.array(mse_list)# 创建网格数据
w_unique = np.unique(w_array)
b_unique = np.unique(b_array)
W, B = np.meshgrid(w_unique, b_unique)
MSE = mse_array.reshape(len(b_unique), len(w_unique))# 绘图
fig = plt.figure(figsize=(10, 8))
ax = fig.add_subplot(111, projection='3d')# 使用plot_surface绘制曲面
surf = ax.plot_surface(W, B, MSE, cmap='viridis', alpha=0.8)ax.set_xlabel('权重 w')
ax.set_ylabel('偏置 b')
ax.set_zlabel('MSE 损失')
ax.set_title('损失函数曲面: y = w*x + b')# 添加颜色条
fig.colorbar(surf, ax=ax, shrink=0.5, aspect=5)# 找到最小MSE的点
min_idx = np.argmin(mse_array)
best_w = w_array[min_idx]
best_b = b_array[min_idx]
best_mse = mse_array[min_idx]# 标记最优点
ax.scatter([best_w], [best_b], [best_mse], color='red', s=100, label=f'最优: w={best_w:.1f}, b={best_b:.1f}')
ax.legend()plt.show()print(f"最优参数: w = {best_w:.1f}, b = {best_b:.1f}")
print(f"最小MSE: {best_mse:.4f}")

Figure_11251

  • 坐标网格: WB
  • 值网格: MSE

最后的坐标网络,W和B也各自是二维数组,这样才能和MSE组成一个3维图

这段有点难理解,ai写了下

# 转换为numpy数组并重塑为网格格式
w_array = np.array(w_list)
b_array = np.array(b_list)
mse_array = np.array(mse_list)# 创建网格数据
w_unique = np.unique(w_array)
b_unique = np.unique(b_array)
W, B = np.meshgrid(w_unique, b_unique)
MSE = mse_array.reshape(len(b_unique), len(w_unique))

最后几段分步详解

我们来一步步拆解每一行代码:

1. w_unique = np.unique(w_array)

  • w_array
    这是一个一维的 NumPy 数组,里面存储了一系列的权重(weight)值。这些值可能有重复。
    • 例如:w_array = [1, 2, 2, 3, 3, 3]
  • np.unique(): 这是 NumPy 的一个函数,它会返回输入数组中排序后唯一值(即去重后的值)。

  • 结果 w_unique
    它将是
    w_array
    

    中所有不重复的权重值,并按从小到大排列。

    • 例如:w_unique = [1, 2, 3]

这一步的目的是:找出所有不同的权重值,作为我们后续网格的 X 轴坐标。

2. b_unique = np.unique(b_array)

  • b_array
    这是一个一维的 NumPy 数组,里面存储了一系列的偏置(bias)值。这些值也可能有重复。
    • 例如:b_array = [4, 4, 5, 5, 6]
  • 结果 b_unique
    它将是
    b_array
    

    中所有不重复的偏置值,并按从小到大排列。

    • 例如:b_unique = [4, 5, 6]

这一步的目的是:找出所有不同的偏置值,作为我们后续网格的 Y 轴坐标。

3. W, B = np.meshgrid(w_unique, b_unique)

  • np.meshgrid(): 这是最关键的一步。它接收两个一维数组,并返回两个二维数组。这两个二维数组共同构成了一个网格的坐标。

    • 它会以第一个输入数组(w_unique)为列,以第二个输入数组(b_unique)为行,创建一个二维坐标网格。
  • 结果 WB:

    • W 是一个二维数组,它的每一行都是 w_unique
    • B 是一个二维数组,它的每一列都是 b_unique
  • 举例说明

    • 输入: w_unique = [1, 2, 3], b_unique = [4, 5, 6]

    • 输出:

      W = [[1 2 3][1 2 3][1 2 3]]B = [[4 4 4][5 5 5][6 6 6]]
      
    • 这样,WB 就共同定义了一个 3x3 的网格,每个网格点的坐标 (W[i][j], B[i][j]) 都对应一个 (权重, 偏置) 的组合。

这一步的目的是:创建一个完整的二维坐标网格,覆盖所有可能的(权重, 偏置)组合。

4. MSE = mse_array.reshape(len(b_unique), len(w_unique))

  • mse_array: 这是一个一维的 NumPy 数组,里面存储了与w_arrayb_array中每一组(w, b)相对应的均方误差(Mean Squared Error)值。
    • 它的长度必须与w_arrayb_array相同。
    • 例如,如果 w_arrayb_array 都有 6 个元素,mse_array 也必须有 6 个元素。
  • len(b_unique)len(w_unique): 它们分别是网格的行数和列数。在我们的例子中,行数是 3,列数是 3。
  • reshape(...): 这个函数将一维的mse_array转换成一个二维数组。
    • 非常重要reshape 函数默认是 ** 按行优先(C-style)** 的顺序重新排列元素的。这意味着,mse_array 中的元素必须是按照与 np.meshgrid 生成网格时相同的顺序排列的。
    • 也就是说,mse_array 的元素顺序应该是先固定b,再遍历w。例如:[mse(w=1,b=4), mse(w=2,b=4), mse(w=3,b=4), mse(w=1,b=5), ...]
  • 结果 MSE: 一个二维的 MSE 数组,它的形状是 (网格行数, 网格列数),也就是 (len(b_unique), len(w_unique))
    • 这个二维数组MSE中的每一个元素MSE[i][j],都对应于网格坐标(W[i][j], B[i][j])处的均方误差值。

这一步的目的是:将一维的 MSE 值数组,按照我们创建的网格形状,重新组织成一个二维的 MSE 矩阵。


总结:为什么要这么做?

假设你有一批数据点 (w, b, mse),它们可能是这样散落的:

  • (1, 4, 0.1)
  • (2, 4, 0.2)
  • (3, 4, 0.15)
  • (1, 5, 0.3)
  • ...

通过上述四行代码,你将这些散落的数据点,整理成了一个结构化的、可以直接用于绘图的二维数据结构:

  • 坐标网格: WB
  • 值网格: MSE

这样,你就可以使用像 matplotlib 这样的库,轻松地绘制出一张关于 wb 的 MSE 热力图(imshow(MSE)),或者一个 3D 曲面图(plot_surface(W, B, MSE)),从而直观地看到在不同的权重和偏置组合下,模型的误差是如何变化的。这对于寻找最优的模型参数非常有帮助。

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

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

相关文章

最新榜单出炉!2025年成都必吃火锅排行榜,美食/烧菜火锅/特色美食/火锅/社区火锅成都火锅品牌口碑推荐榜

成都火锅市场格局深度解析 作为享誉全国的美食之都,成都火锅市场始终保持着旺盛的生命力与创新活力。据最新市场调研数据显示,成都火锅行业已形成多元化发展格局,其中以特色烧菜火锅为代表的新兴品类表现尤为突出。…

C# 多线程(学习笔记13)

1.进程与线程 进程是资源管理的最小单位,有自己的内存空间,一个进程可以有多个线程,各线程之间共享进程的系统资源。 多线程的意义在于多任务的并发执行。多线程对于自动化领域意义重大,例如一个线程去访问硬件设备…

【SPIE出版 | 连续四届均实现EI SCOPUS双检索 | 最快会后3个月检索】第五届计算机、信息工程与电子材料国际学术会议(CTIEEM 2025)

第五届计算机、信息工程与电子材料国际学术会议(CTIEEM 2025)将于2025年12月12日至14日在中国哈尔滨市举行。【连续四届均实现EI & SCOPUS双检索,最快会后3个月检索!】 【哈尔滨信息工程学院主办,12月与您相聚…

(让 Java IA MCP 更简单 )Solon AI v3.7.2 发布

Solon AI & MCP 是 Java 智能体开发框架,支持 Java 8-25,提供统一接口集成主流 AI 模型。框架支持聊天模型、生成模型、RAG 知识库、MCP 协议等多种 AI 能力,并提供与 Spring 等框架的兼容性。技术预览展示了简…

Unity 使用Blit生成图片踩的坑

p { line-height: 2; font-size: 18px } 引言在项目中经常需要把shader处理过的纹理保存成图片,如果直接获取材质的源纹理并保存,保存的是未经shader处理的原始纹理。有一种方法是使用Unity中的Blit函数读出经shader…

P14568 【MX-S12-T3】排列

目前只会 \(70pts\)。 考虑设 \(f_{i, j, k}\) 表示填到第 \(i\) 个数,最小值为 \(j\),最大值为 \(k\) 的方案数是多少,然后如果 \(op = 2, 3\) 可以直接转移,\(op = 0, 1\) 是不是还得数据结构辅助一下做到 \(O(n…

2025年辊压磨批发厂家权威推荐榜单:超细环辊磨/环辊磨粉机/辊压磨设备源头厂家精选

辊压磨作为粉体工程中的关键设备,其技术水平与可靠性直接关系到粉体加工的细度、效率与成品质量。以下将基于企业实力、产品特性、技术参数及行业应用等客观维度,为您梳理四家在辊压磨领域具有代表性的生产企业,为行…

SQL分区裁剪 - --

https://help.aliyun.com/zh/maxcompute/use-cases/check-whether-partition-pruning-is-effective?spm=a2c4g.11186623.0.0.290e1eddWQiIZE#concept-vjf-sxd-5db

2025 防水型压力传感器十大品牌推荐:硬核防护,赋能多元场景

2025 年,全球压力传感器市场规模已攀升至 122.6 亿美元,中国市场以 154.6 亿元规模增速领先全球。在工业自动化、海洋经济、新能源等领域的刚性需求驱动下,防水型压力传感器作为核心感知元件,其防水等级、测量精度…

2025年防爆仪表箱品牌权威推荐榜单:防爆接线箱/防爆控制箱/防爆正压柜源头厂家精选

防爆仪表箱作为石油、化工、燃气等易燃易爆场所的关键电气设备,其安全性能与质量直接关系到工业生产安全。本文将基于企业实力、产品特性、资质认证及行业应用等客观维度,为您梳理防爆仪表箱领域的代表性品牌,为行业…

2025年温度监控系统直销厂家权威推荐榜单:炉温仪‌/测厚仪‌/炉温测试仪‌源头厂家精选

在SMT贴片、回流焊、波峰焊等电子制造工艺中,一套精准的温度监控系统能将产品良率提升5%-10%,成为保障产品质量的关键环节。 在工业自动化与智能化制造快速发展的今天,温度监控系统已成为电子制造、科研实验等领域不…

2025年包头钢材/无缝钢管/螺纹管/型材/钢板行业场实力厂家盘点:优质源头厂家精选指南

摘要 随着包头钢铁产业的持续发展,2025年包头型材市场呈现出蓬勃发展的态势。本文基于市场调研和用户反馈,整理出五家值得推荐的包头型材源头厂家,排名不分先后,仅供参考。特别说明:本文推荐的企业均经过多方考察…

2025 最新太原山西菜馆推荐!权威测评认证的山西菜馆排行榜,探寻非遗传承与地道风味的匠心之选

引言 作为北方菜系的璀璨明珠,传统风味菜肴承载着数千年饮食文化精髓,以醇厚口感与精湛技法享誉业界。然而行业乱象频发:预制菜品泛滥导致风味失真,部分门店定价虚高,非遗技艺传承断层,食材溯源体系缺失等问题,…

connect()前两个参数是什么?

connect() 是 react-redux 中用于把 React 组件和 Redux store 连接起来的高阶函数,它一共可以接收 4 个参数,但最常用的是前两个 connect(mapStateToProps, mapDispatchToProps) 下面解释这两个参数分别干什么: 1.…

咱鹤壁家长补课不踩坑!2026年鹤壁一对一辅导机构最新测评榜单

淇滨区王妈妈愁得睡不着:小学二年级女儿拼音b和d总搞混,找了家教光念课本不教方法,补俩月听写还错一半;山城区李爸爸气不打一处来:初三儿子物理电学一窍不通,线下机构花了六千多,鹤壁一模真题照样不会做;浚县张…

完整教程:PyTorch CV模型实战全流程(二)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025 儿童镜框十大品牌推荐,近视防控适配首选榜单

随着儿童近视率攀升至 51.9%,功能型防控镜片(如新乐学、星趣控)已成为家长刚需,而镜框作为核心适配载体,其精准度、稳定性直接决定防控效果。2025 年中国儿童镜框市场规模预计达 149.3 亿元,品牌竞争聚焦于参数合…

2025年纸鞋撑机械制造企业权威推荐榜单:自动纸鞋撑机‌/纸鞋撑设备‌/鞋撑定型机械设备‌源头厂家精选

一台高效的自动纸鞋撑机,每分钟可生产超过60个纸鞋撑,相比传统手工制作方式,生产效率提升800%,同时降低35%的原材料损耗。 在鞋业制造行业持续升级的背景下,纸鞋撑作为鞋子包装和定型的重要辅料,其生产设备的自动…

如何快速低成本自建埋点系统?基于ClkLog的开源解决方案

ClkLog是一款可私有化部署的开源用户行为数据分析系统,支持 Web、App、小程序、鸿蒙 OS 等端的事件埋点采集,内置多种主流分析模型,帮助团队快速搭建自有埋点分析平台,实现访问统计、事件分析、用户画像等能力。本…

2025年可提升式管式曝气器企业权威推荐榜单:可提升曝气器/可提升微孔曝气器/可提升式曝气器源头厂家精选

在环保政策持续收紧和水处理要求日益严格的背景下,可提升式管式曝气器作为污水处理系统的核心部件,其市场需求稳步增长,技术创新要求不断提高。 可提升式管式曝气器作为一种高效的曝气设备,在市政污水、工业废水、…