动手学深度学习2025.1.23
一、预备知识
1.数据操作
(1)数据访问:
一个元素:[1,2] //行下标为1,列下标为2的元素
一行元素:[1,:] //行下标为1的所有元素
一列元素:[:,1] //列下标为1的所有元素
子区域:[1:3,1:] //行下标为[1,3),列下标为[1,+无穷)的所有元素
子区域:[::3,::2] //行下标跨度为3,列下标跨度为2的元素
(2)张量(tensor):
理解Tensorflow中的张量:从零维到四维-CSDN博客
一种多维数组,可以用来表示各种物理量和几何量。
张量连结:是一种将多个张量沿着某一维度合并的操作。
torch.cat()
torch.cat()
是 PyTorch 中用于张量拼接的主要函数,其语法如下:
torch.cat(tensors, dim=0)
-
tensors:一个包含多个张量的序列,这些张量需要在指定维度上具有相同的形状。
-
dim:指定拼接的维度。
-
一维张量拼接
tensor_a = torch.tensor([1, 2, 3]) tensor_b = torch.tensor([4, 5, 6]) concatenated = torch.cat((tensor_a, tensor_b), dim=0) # 结果为 [1, 2, 3, 4, 5, 6]
输出形状为
(6,)
。 -
二维张量拼接
tensor_1 = torch.tensor([[1, 2], [3, 4]]) tensor_2 = torch.tensor([[5, 6], [7, 8]]) concatenated_dim0 = torch.cat((tensor_1, tensor_2), dim=0) # 沿第0维拼接 concatenated_dim1 = torch.cat((tensor_1, tensor_2), dim=1) # 沿第1维拼接
输出形状分别为
(4, 2)
和(2, 4)
。 -
高维张量拼接
tensor_3d_1 = torch.randn(2, 3, 4) tensor_3d_2 = torch.randn(2, 3, 4) concatenated_dim2 = torch.cat((tensor_3d_1, tensor_3d_2), dim=2) # 沿第2维拼接
输出形状为
(2, 3, 8)
。=>张量的初始形状和内容
tensor_5 = torch.tensor([[[2, 3, 5]], [[9, 0, 2]]]) tensor_6 = torch.tensor([[[4, 5, 9]], [[3, 6, 4]]])
-
形状:
tensor_5
和tensor_6
的形状都是(2, 1, 3)
。 -
内容:
-
tensor_5
包含两个矩阵:[[[2, 3, 5]],[[9, 0, 2]]]
-
tensor_6
包含两个矩阵:[[[4, 5, 9]],[[3, 6, 4]]]
-
=>在不同维度上拼接的结果
-
沿
dim=2
拼接
dim2 = torch.cat((tensor_5, tensor_6), dim=2)
-
拼接维度:
dim=2
是每个矩阵的列方向(最内层的维度)。 -
拼接过程:
-
第一个矩阵的第0行:
-
tensor_5
的[2, 3, 5]
和tensor_6
的[4, 5, 9]
拼接为[2, 3, 5, 4, 5, 9]
。
-
-
第二个矩阵的第0行:
-
tensor_5
的[9, 0, 2]
和tensor_6
的[3, 6, 4]
拼接为[9, 0, 2, 3, 6, 4]
。
-
-
-
结果:
tensor([[[2, 3, 5, 4, 5, 9]], [[9, 0, 2, 3, 6, 4]]])
-
形状:
(2, 1, 6)
。-
第0维(矩阵数量):2。
-
第1维(行数):1。
-
第2维(列数):6(拼接后的列数)。
-
-
沿
dim=0
拼接
dim0 = torch.cat((tensor_5, tensor_6), dim=0)
-
拼接维度:
dim=0
是最外层的维度,表示矩阵的数量。 -
拼接过程:
-
将
tensor_5
的两个矩阵和tensor_6
的两个矩阵依次排列。
-
-
结果:
tensor([[[2, 3, 5]], [[9, 0, 2]], [[4, 5, 9]], [[3, 6, 4]]])
-
形状:
(4, 1, 3)
。-
第0维(矩阵数量):4(拼接后的矩阵数量)。
-
第1维(行数):1。
-
第2维(列数):3。
-
-
沿
dim=1
拼接
dim1 = torch.cat((tensor_5, tensor_6), dim=1)
-
拼接维度:
dim=1
是每个矩阵的行方向。 -
拼接过程:
-
第一个矩阵:
-
tensor_5
的第0行[2, 3, 5]
和tensor_6
的第0行[4, 5, 9]
拼接为:[[2, 3, 5],[4, 5, 9]]
-
-
第二个矩阵:
-
tensor_5
的第0行[9, 0, 2]
和tensor_6
的第0行[3, 6, 4]
拼接为:[[9, 0, 2],[3, 6, 4]]
-
-
-
结果:
tensor([[[2, 3, 5],[4, 5, 9]], [[9, 0, 2],[3, 6, 4]]])
-
形状:
(2, 2, 3)
。-
第0维(矩阵数量):2。
-
第1维(行数):2(拼接后的行数)。
-
第2维(列数):3。
-
=>多维拼接总结
-
拼接维度:
dim
参数决定了拼接的方向。 -
张量的形状:拼接时,除了拼接维度外,其他维度的大小必须一致。
-
dim=0:沿着最外层维度拼接,增加矩阵的数量。
-
dim=1:沿着行方向拼接,增加行数。
-
dim=2:沿着列方向拼接,增加列数。
(3)节省内存
尽量进行原地操作,节省内存开销
before = id(X) X += Y id(X) == before
1.
id(X)
的含义id(X)
返回变量X
所指向的对象的内存地址。如果X
的内容被修改,但变量X
仍然指向同一个对象,那么id(X)
的值不会改变。2. 原地操作(In-place Operations)
在 Python 中,某些操作会直接修改对象的内容,而不是创建一个新的对象。例如:
-
X += Y
是一个原地操作,它会直接修改X
的内容,而不是创建一个新的对象。
-
原地操作:
X += Y
是原地操作,它直接修改了X
的内容,而不是创建新的对象。 -
id() 的稳定性:由于
X
的内存地址没有改变,id(X)
的值在操作前后保持一致。 -
Python 的内存管理:Python 的内存管理机制允许某些操作直接修改对象的内容,而不是创建新的对象,这有助于节省内存和提高效率。
如果使用非原地操作(例如
X = X + y
),结果会有所不同:Python复制
before = id(X) X = X + Y id(X) == before # 这将返回 False
在这种情况下,
X = X + Y
会创建新的对象,并将X
指向这个新对象。因此,id(X)
的值会发生变化。(3)Numpy数组
NumPy(Numerical Python)数组是 Python 中用于高效数值计算的核心数据结构。它是 NumPy 库的基础,提供了多维数组对象(
ndarray
)和一系列操作这些数组的工具。A = X.numpy() B = torch.tensor(A) type(A), type(B)
-
2.数据预处理
将工作目录改为D盘的目录
os.getcwd()
'C:\Users\aospr'
target_dir = r"D:\深度学习\数据demo"
os.chdir(target_dir)
os.getcwd()
'D:\深度学习\数据demo'
解决将NaN填充成平均值的bug:
inputs = inputs.fillna(inputs.mean(numeric_only=True)) # 计算均值,只对数值列生效
相关文章:
动手学深度学习2025.1.23
一、预备知识 1.数据操作 (1)数据访问: 一个元素:[1,2] //行下标为1,列下标为2的元素 一行元素:[1,:] //行下标为1的所有元素 一列元素:[:,1] //列下标为1的所有元素 子区域:[…...

生存网络与mlr3proba
在R语言中,mlr3包是一个用于机器学习的强大工具包。它提供了一种简单且灵活的方式来执行超参数调整。 生存网络是一种用于生存分析的模型,常用在医学和生物学领域。生存分析是一种统计方法,用于研究事件发生的时间和相关因素对事件发生的影响。生存网络可以用来预测个体在给…...

C#与AI的共同发展
C#与人工智能(AI)的共同发展反映了编程语言随着技术进步而演变,以适应新的挑战和需要。自2000年微软推出C#以来,这门语言经历了多次迭代,不仅成为了.NET平台的主要编程语言之一,还逐渐成为构建各种类型应用程序的强大工具。随着时…...

2000-2020年各省第二产业增加值数据
2000-2020年各省第二产业增加值数据 1、时间:2000-2020年 2、来源:国家统计局、统计年鉴、各省年鉴 3、指标:行政区划代码、地区、年份、第二产业增加值 4、范围:31省 5、指标解释:第二产业增加值是指在一个国家或…...

【MySQL】 库的操作
欢迎拜访:雾里看山-CSDN博客 本篇主题:【MySQL】 库的操作 发布时间:2025.1.23 隶属专栏:MySQL 目录 库的创建语法使用 编码规则认识编码集查看数据库默认的编码集和校验集查看数据库支持的编码集和校验集指定编码创建数据库验证不…...
docker 启动镜像命令集合
安装rabbitmq 参考地址: https://blog.csdn.net/xxpxxpoo8/article/details/122935994 docker run -it -d --namerabbit-3.8 -v /d/docker/rabbitmq-stomp/conf:/etc/rabbitmq -p 5617:5617 -p 5672:5672 -p 4369:4369 -p 15671:15671 -p 15672:15672 -p 25672:2…...

微信小程序获取位置服务
wx.getLocation({type: gcj02,success(res) {wx.log(定位成功);},fail(err) {wx.log(定位失败, err);wx.showModal({content: 请打开手机和小程序中的定位服务,success: (modRes) > {if (modRes.confirm) {wx.openSetting({success(setRes) {if (setRes.authSetting[scope.u…...

Docker Load后存储的镜像及更改镜像存储目录的方法
Docker Load后存储的镜像及更改镜像存储目录的方法 Docker Load后存储的镜像更改镜像存储目录的方法脚本说明注意事项Docker作为一种开源的应用容器引擎,已经广泛应用于软件开发、测试和生产环境中。通过Docker,开发者可以将应用打包成镜像,轻松地进行分发和运行。而在某些场…...
Langchain本地知识库部署
本地部署(Docker + LangChain + FAISS) 1. 概述 本地部署 LangChain-Chatchat 可以为企业提供高效、安全、可控的 AI 知识库方案。本方案基于 Docker、LangChain 和 FAISS 进行本地化部署,适用于企业内部知识库问答、私有化 AI 应用等场景。 2. 技术选型 2.1 LangChain …...

java基础学习——jdbc基础知识详细介绍
引言 数据的存储 我们在开发 java 程序时,数据都是存储在内存中的,属于临时存储,当程序停止或重启时,内存中的数据就会丢失,我们为了解决数据的长期存储问题,有以下解决方案: 通过 IO流书记&…...

联想电脑怎么设置u盘启动_联想电脑设置u盘启动方法(支持新旧机型)
有很多网友问联想电脑怎么设置u盘启动,联想电脑设置u盘启动的方法有两种,一是通过bios进行设置。二是通过快捷方式启动进入u盘启动。但需要注意有两种引导模式是,一种是uefi引导,一种是传统的leacy引导,所以需要注意制…...
C# 解析 HTML 实战指南
在网页开发和数据处理的场景中,经常需要从 HTML 文档里提取有用的信息。C# 作为一门强大的编程语言,提供了丰富的工具和库来实现 HTML 的解析。这篇博客就带你深入了解如何使用 C# 高效地解析 HTML。 一、为什么要在 C# 中解析 HTML 在实际项目中&…...

光谱相机在智能冰箱的应用原理与优势
食品新鲜度检测 详细可点击查看汇能感知团队实验报告:高光谱成像技术检测食物新鲜度 检测原理:不同新鲜程度的食品,其化学成分和结构会有所不同,在光谱下的反射、吸收等特性也存在差异。例如新鲜肉类和蔬菜中的水分、蛋白质、叶…...

编写0号中断的处理程序
实验内容、程序清单及运行结果 编写0号中断的处理程序(课本实验12) 解: assume cs:code code segment start: mov ax,cs mov ds,ax mov si,offset do mov ax,0 mov es,ax mov di,200h mov cx,offset doend-offset do ;安装中断例…...

“““【运用 R 语言里的“predict”函数针对 Cox 模型展开新数据的预测以及推理。】“““
主题与背景 本文主要介绍了如何在R语言中使用predict函数对已拟合的Cox比例风险模型进行新数据的预测和推理。Cox模型是一种常用的生存分析方法,用于评估多个因素对事件发生时间的影响。文章通过具体的代码示例展示了如何使用predict函数的不同参数来获取生存概率和…...

群晖docker获取私有化镜像http: server gave HTTP response to HTTPS client].
群晖docker获取私有化镜像提示http: server gave HTTP response to HTTPS clien 问题描述 层级时间用户事件Information2023/07/08 12:47:45cxlogeAdd image from xx.xx.31.240:1923/go-gitea/gitea:1.19.3Error2023/07/08 12:47:48cxlogeFailed to pull image [Get "http…...
使用 C++ 在深度学习中的应用:如何通过 C++20 构建高效神经网络
深度学习已经成为现代人工智能的核心技术,在图像识别、自然语言处理、语音识别等多个领域广泛应用。尽管 Python 因其简便易用和强大的深度学习框架(如 TensorFlow 和 PyTorch)而在这一领域占据主导地位,但 C 作为一门高性能语言&…...

当 Facebook 窥探隐私:用户的数字权利如何捍卫?
随着社交平台的普及,Facebook 已经成为全球用户日常生活的一部分。然而,伴随而来的隐私问题也愈发严峻。近年来,Facebook 频频被曝出泄露用户数据、滥用个人信息等事件,令公众对其隐私保护措施产生质疑。在这个信息化时代…...
Spring MVC中HandlerInterceptor和Filter的区别
目录 一、处理阶段 二、功能范围 三、参数访问 四、配置方式 五、使用场景说明 在Spring MVC中,HandlerInterceptor和Filter都是用于拦截请求的重要组件,但它们在多个方面存在显著的差异。本文将详细解析这两种拦截机制的区别,并结合使用…...

Android多语言开发自动化生成工具
在做 Android 开发的过程中,经常会遇到多语言开发的场景,尤其在车载项目中,多语言开发更为常见。对应多语言开发,通常都是在中文版本的基础上开发其他国家语言,这里我们会拿到中-外语言对照表,这里的工作难…...

网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...

对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)
目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关࿰…...

佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...

【VLNs篇】07:NavRL—在动态环境中学习安全飞行
项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战,克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...
【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论
路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...

【从零学习JVM|第三篇】类的生命周期(高频面试题)
前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 …...

【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看
文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...