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.hqwc.cn/news/284102.html

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

相关文章

亚马逊云科技re:Invent推出生成式AI技术堆栈及关键服务和工具

亚马逊云科技于29日推出“生成式AI技术堆栈”后,又在30日的re:Invent 2023大会上宣布了一系列支持这一全新堆栈的关键服务和工具。 亚马逊云科技数据和人工智能副总裁Swami Sivasubramanian在主题演讲中,将生成式人工智能与“超新星爆炸”进行了比较&am…

IT和业务部门都想要的数据摆渡产品是这样的!

企业只要进行了网络隔离,就必然会需要数据摆渡相关产品,不管是免费的也好,专业收费的也好,总之都是需要将数据流转起来进行使用。 传统的数据摆渡产品也不少,比如FTP,甚至是U盘拷贝,在功能上来说…

第二证券:市场结构性行情延续 关注科技成长等板块

上星期A股连续震动,小盘结构性行情连续。国内方针宽松新兴产业催化持续海外宽松生意升温的环境仍然有利于偏生长和小盘风格,主张注重同步受益于产业催化持续和方针活跃发力的TMT、医药、轿车等科技生长板块,别的,高股息板块在改改…

Redis 执行性能测试

Redis 性能测试是通过同时执行多个命令实现的。 语法 redis 性能测试的基本命令如下: redis-benchmark [option] [option value] 注意:该命令是在 redis 的目录下执行的,而不是 redis 客户端的内部指令。 实例 以下实例同时执行 10000 个…

华为黑科技充电车要来了 | 百能云芯

华为再度掀起黑科技风潮,新一款创新力之作——华为充电车(或被戏称为行动充电机器人)近日亮相于国家知识产权局的中国专利公布公告中。这款充电车外观设计专利已经获得授权,勾勒出一个圆润流畅、被寄予“可爱”期待的外观。在这款…

使用oled虚拟人主播,如何搭建场景

使用OLED虚拟人主播搭建场景,可以按照以下步骤进行: 确定场景需求:首先,明确需要搭建的场景类型,例如直播间、新闻演播室、产品发布会等。根据场景需求,确定所需的功能和设备。 选择合适的OLED虚拟人主播&a…

猜数字小游戏(猜错了会关机推荐让室友帮你玩)

前言 今天来带大家写一个简易的猜数字小游戏,如果连着猜错n次(自己设定)就会导致电脑关机,还在等什么呢?赶紧学会咯,发给你的室友让他帮你玩吧! 正文 随机数的生成 首先我们还要学会如何创建随…

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

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

若依 ruoyi-vue3 集成aj-captcha实现滑块、文字点选验证码

目录 0. 前言0.1 说明 1. 后端部分1.1 添加依赖1.2. 修改 application.yml1.3. 新增 CaptchaRedisService 类1.4. 添加必须文件1.5. 移除不需要的类1.6. 修改登录方法1.7. 新增验证码开关获取接口1.8. 允许匿名访问 2. 前端部分(Vue3)2.1. 新增依赖 cryp…

千梦网创:唯有皮条能够拯救皮条客

我常说,赚钱就是服侍好双爹。 对于目标用户的定位,其实没有任何好坏之分也没有任何轻松简单之分,纯粹看个人意愿。 收一群小白,每天要做的就是重复回答大概率经常回复的问题。 收一群大佬,每天要做的就是准备回答多…

HBuilder X将Vue打包APP返回上一页退出问题、清除缓存页面历史防止返回登录页(上一页)、以及状态栏颜色切换

目录 一、返回上一页退出问题 二、清除缓存页面历史防止返回上一页 三、状态栏颜色切换 一、返回上一页退出问题 1.首先重新认识一下vue的页面跳转,这里我只说常用到的两个 goSkip(){//直接跳转this.$router.push(/test);this.$router.replace(/test);//带参数跳…

【MySQL学习之基础篇】概述

文章目录 1. mysql的启动和停止命令2. 客户端连接3. 数据模型 1. mysql的启动和停止命令 通过指令启动或停止,以管理员身份运行cmd,进入命令行执行如下指令: (1)启动myaql net start mysql(2)…