2.1 数据操作

声明:

注意!!!
本博客仅用于本人学习笔记作用,所有资料来源都来自于李沐大神,博客中图片为沐神书上的图片。如有侵权,请联系本人删除,谢谢。
资料来源:https://zh-v2.d2l.ai/chapter_introduction/index.html

笔记

本章主要涉及一些简单的数据操作,此笔记也没有按照书上的顺利来写,只是将自己看书时的疑问记录下来。

张量和向量

n维数组也称为张量;一个轴的张量对应数学上的向量;两个轴的张量对应数学上的矩阵;两个轴以上的张量没有特殊的数学名称。
可以通过张量的shape属性来访问张量(沿每个轴的长度)的形状 。
shape参数的个数对应维数,每一参数代表该维度上的长度。

# reshape函数,改变张量的形状而不改变原数数量和元素值
X = x.reshape(3, 4)
X tensor([[ 0,  1,  2,  3],[ 4,  5,  6,  7],[ 8,  9, 10, 11]])"""
此处选用了一个reshape,可以更加直观的看到,该张量第一个维度为2,第二个维度为4。
"""

如果我们的目标形状是(高度,宽度), 那么在知道宽度后,高度会被自动计算得出,不必我们自己做除法。 在上面的例子中,为了获得一个3行的矩阵,我们手动指定了它有3行和4列。 幸运的是,我们可以通过-1来调用此自动计算出维度的功能。 即我们可以用x.reshape(-1,4)或x.reshape(3,-1)来取代x.reshape(3,4)。

torch.randn() 函数

torch.randn 函数生成的随机数遵循标准正态分布,也就是均值为0,标准差为1的分布。这意味着生成的随机数在接近0的区域出现的概率较高,而在离0较远的区域出现的概率较低,整体呈钟形曲线分布。这种标准正态分布在统计和深度学习中经常被使用,因为它具有许多有用的性质。

运算符

dim参数:

dim = 0:在垂直方向进行拼接;dim = 1:在水平方向上进行拼接。

# 把多个张量连接(concatenate)起来,行拼接为 0, 列拼接为 1
X = torch.arange(12, dtype=torch.float32).reshape((3, 4))
Y = torch.tensor([[2.0, 1, 4, 3], [1, 2, 3, 4], [4, 3, 2, 1]])
torch.cat((X, Y), dim=0), torch.cat((X, Y), dim=1)(tensor([[ 0.,  1.,  2.,  3.],[ 4.,  5.,  6.,  7.],[ 8.,  9., 10., 11.],[ 2.,  1.,  4.,  3.],[ 1.,  2.,  3.,  4.],[ 4.,  3.,  2.,  1.]]),tensor([[ 0.,  1.,  2.,  3.,  2.,  1.,  4.,  3.],[ 4.,  5.,  6.,  7.,  1.,  2.,  3.,  4.],[ 8.,  9., 10., 11.,  4.,  3.,  2.,  1.]]))

广播机制

广播机制是一种在不同形状的张量之间执行操作的方式,使得它们可以进行元素级操作而无需显式扩展其形状。

  1. a = torch.arange(3).reshape((3, 1)):这行代码创建了一个大小为 (3, 1) 的张量 a,它包含了从 0 到 2 的连续整数,并且将这些整数重新塑造为一个 3x1 的矩阵。

  2. b = torch.arange(2).reshape((1, 2)):这行代码创建了一个大小为 (1, 2) 的张量 b,它包含了从 0 到 1 的连续整数,并且将这些整数重新塑造为一个 1x2 的矩阵。

# 广播机制
a = torch.arange(3).reshape(3, 1)
b = torch.arange(2).reshape(1, 2)
a , b(tensor([[0],[1],[2]]),tensor([[0, 1]]))
a + b

在这个操作中,a 和 b 的形状不同,a 的形状是 (3, 1),而 b 的形状是 (1, 2)。根据广播机制的规则,PyTorch将自动扩展它们的形状,使它们具有相同的形状。这是如何扩展的:

张量 a 扩展为 (3, 2) 的形状,通过在第二个维度(列)上复制。
张量 b 扩展为 (3, 2) 的形状,通过在第一个维度(行)上复制。
最终,a 和 b 都被扩展为 (3, 2) 的形状,然后可以进行元素级的加法操作。最后的结果将是一个大小为 (3, 2) 的张量,包含了对应位置的元素相加的结果。

所以,这段代码的输出将会是:

a:
tensor([[0],[1],[2]])b:
tensor([[0, 1]])result:
tensor([[0, 1],[1, 2],[2, 3]])

张量 a 和 b 扩展后的结果如下:

张量 a 扩展为 (3, 2) 的形状,通过在第二个维度(列)上复制,结果如下:

tensor([[0, 0],[1, 1],[2, 2]])

张量 b 扩展为 (3, 2) 的形状,通过在第一个维度(行)上复制,结果如下:

tensor([[0, 1],[0, 1],[0, 1]])

这两个张量扩展后的形状都是 (3, 2),它们分别在行和列上被复制以匹配最终的形状,以便进行元素级的操作。在元素级操作中,它们将相应位置的元素相加,最终得到以下结果:

result:
tensor([[0, 1],[1, 2],[2, 3]])

内存

在内存这一块采用如下方法可保证后续的内存相同:

Z = torch.zeros_like(Y)
print('id(Z):', id(Z))
Z[:] = X + Y
print('id(Z):', id(Z))

在pycharm测试时发现 X += Y 后X指向的内存与之前的并不一样。

# -*- coding: utf-8 -*-
# Author: xxx
"""
内存
"""x = 12
print(id(x))y = 13
print(id(y))x += y
print('此时x的内存地址为: %s' % id(x))"""
2229481532048
2229481532080
此时x的内存地址为: {2229481532464}
"""

练习

在这里插入图片描述

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

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

相关文章

什么是通讯芯片?通讯芯片又分什么种类?

通讯芯片是指在通讯系统中起到连接和传输信号的重要组成部分。根据通讯芯片的功能和应用,可以将其分为以下几类: 1、收发器芯片 2、窄带中频放大器芯片 3、卫星接收器LNB芯片 4、电话机芯片 5、压缩扩展器芯片 以上是通讯芯片的一些分类,随着通讯技术的不断发展…

patchless amsi学习(中)

DR7 DR7被称为“调试控制寄存器”,允许对每个硬件断点进行精细控制。其中,前8位控制是否启用了特定的硬件断点。偶数位(0、2、4、6)称为L0-L3,在本地启用了断点,这意味着仅在当前任务中检测到断点异常时才…

接口自动化测试实战教程

实现思路 使用excel管理用例用例信息,requests模块发送http请求,实现了记录日志,邮件发送测试报告的功能 目录结构如下: 下面直接上代码: 统筹脚本 # -*- coding:utf-8 -*-import osfrom interface import Interfa…

Android Termux安装MySQL数据库并通过内网穿透实现公网远程访问

文章目录 前言1.安装MariaDB2.安装cpolar内网穿透工具3. 创建安全隧道映射mysql4. 公网远程连接5. 固定远程连接地址 前言 Android作为移动设备,尽管最初并非设计为服务器,但是随着技术的进步我们可以将Android配置为生产力工具,变成一个随身…

【MongoDB】--MongoDB的Sort排序问题

目录 一、问题背景描述1.1、问题背景1.2、问题分析 二、建立索引支持深度翻页查询2.1、调整sort排序的内存限制【不建议】2.2、创建索引2.3、拓展--组合索引什么时候失效 二、聚合查询解决深度翻页查询 一、问题背景描述 1.1、问题背景 现实系统页面翻页到20000页之后&#x…

Improving IP Geolocation with Target-Centric IP Graph (Student Abstract)

ABSTRACT 准确的IP地理定位对于位置感知的应用程序是必不可少的。虽然基于以路由器为中心(router-centric )的IP图的最新进展被认为是前沿的,但一个挑战仍然存在:稀疏IP图的流行(14.24%,少于10个节点,9.73%孤立)限制了图的学习。为了缓解这个问题,我们将目标主机(ta…

【LeetCode刷题笔记(8-2)】【Python】【接雨水】【单调栈】【困难】

文章目录 引言接雨水题目描述提示 解决方案2:【单调栈】结束语 【接雨水】 【LeetCode刷题笔记(8-1)】【Python】【接雨水】【动态规划】【困难】 引言 编写通过所有测试案例的代码并不简单,通常需要深思熟虑和理性分析。虽然这…

200kw直流电子负载测试

在进行200kw直流电子负载测试时,需要设置合适的负载参数,如电流、电压和功率等,并记录测试结果。在测试过程中,可以通过改变负载参数来模拟不同工作条件下的电子设备的性能。通过对电子设备在不同负载条件下的响应进行测试和分析&…

JupyterHub 如何切换 conda 小环境

JupyterHub 如何切换 conda 小环境 服务器已经部署好 JupyterHub ,相关端口请看对应答疑群群公告。在Jupyterhub 中使用 conda 创建的小环境,首先 ssh 登录上服务器或者在 JupyterHub 网页端打开终端 terminal。然后安装 conda ,方法请见 Q4&…

【MyBatis Plus】逻辑删除、分页、乐观锁的应用及讲解

🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《MyBatis-Plus》。🎯🎯 &am…

改进灰狼算法求解:考虑需求响应的风-光柴-储容量优化配置

目录 文章摘要: 亮点: 研究背景: 考虑需求相应的容量配置: 风、光、柴、储微电网模型: 储能配置模型: 改进的灰狼算法: 基于余弦规律变化的收敛因子 引入动态权重策略 运行效果&#…

数据结构:图文详解 队列 | 循环队列 的各种操作(出队,入队,获取队列元素,判断队列状态)

目录 队列的概念 队列的数据结构 队列的实现 入队 出队 获取队头元素 获取队列长度 循环队列的概念 循环队列的数据结构 循环队列的实现 判断队列是否为空 判断队列是否已满 入队 出队 得到队头元素 得到队尾元素 队列的概念 队列(Queue&#xff0…

基于单片机的视力保护及身姿矫正器设计(论文+源码)

1. 系统设计 在本次设计中,其系统整个框图如图2-1所示。其主要的核心控制模块由超声波模块,光敏电阻,按键模块,复位电路,红外模块,LCD显示等组成。其包括自动模式,手动模式。自动模式&#xff…

upload-labs笔记

简介 upload-labs是一个使用php语言编写的,专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共21关,每一关都包含着不同上传方式。 文件上传漏洞是指: Web 服务器允许用户将文件上传至其…

Linux部署Nacos注册中心结合内网穿透实现远程访问UI管理界面

文章目录 1. Docker 运行Nacos2. 本地访问Nacos3. Linux安装Cpolar4. 配置Nacos UI界面公网地址5. 远程访问 Nacos UI界面6. 固定Nacos UI界面公网地址7. 固定地址访问Plik8. 结语 Nacos是阿里开放的一款中间件,也是一款服务注册中心,它主要提供三种功能&#xff1a…

多序列图像拼接

这里写自定义目录标题 图像匹配图像匹配代码 图像融合main.py运行代码 总的来说,步骤如下: 效果如下: 拼接好的图如下: 图像匹配 依次为 特征点提取,特征点筛选,图像变换。 常见的图像匹配算法有&…

2024上半年软考别轻易尝试!先了未发布

最近几年,软件考试变得非常受欢迎!不论你的专业、学历或工作时间如何,你都可以报名参加,而且通过考试取得证书还能用来抵扣个人所得税、评职称、帮助落户和参与招投标等等。 身边的朋友们纷纷参加软考,这让我也产生了…

下一代实时数据库:Apache Doris 【六】数据划分

3.4 数据划分 3.4.1 列定义3.4.2 分区与分桶3.4.3 PROPERTIES3.4.4 ENGINE3.4.5 其他后记 3.4 数据划分 以 3.3.2 的建表示例来理解。 3.4.1 列定义 以 AGGREGATE KEY 数据模型为例进行说明。更多数据模型参阅 Doris 数据模型。 列的基本类型, 可以通过在 mysql-cli…

山区老人爱的礼物丨走进武隆区土地乡为山区老人送温暖

从车水马龙的城市到人烟稀少的乡村,穿越重峦叠嶂的高山,见到的是独属于大山的辽阔和山区老人眼中的星河。近日,传益千里为爱出发,在三棵柚公益基金会的支持下开展“山区老人爱的礼物”公益计划,走进武隆区土地乡&#…

Unity Meta Quest 一体机开发(十一):【手势追踪】远距离抓取

文章目录 📕教程说明📕玩家配置 DistanceHandGrabInteractor📕物体配置 DistanceHandGrabInteractable📕调整物体飞向手部的速度📕调整探测物体的范围⭐HandFrustumNarraw⭐HandFrustumWide⭐HeadFrustum 此教程相关的…