【Pytorch 基础教程2】10分钟掌握Tensor基础 VSCode +Pytorch配置

Pytorch 基础教程 02

Tensor
PyTorch 作为Numpy的代替品,可以使用GPU的强大计算能力
提供最大的灵活性和告诉的深度学习研究平台

这里补充上实验环境调试:第一次使用VS Code可以参考:PyTorch(超详细)部署与激活 举起Python火炬,点亮智慧人生【Windows版】

另外这里可能会遇到一些环境问题:在这里插入图片描述
为了解决这里先点击VS Code右下角环境,在弹出菜单中选择Pytorch环境
在这里插入图片描述
开始安装torch library
在这里插入图片描述
SUCCESS !!

开始coding

Tensor是 PyTorch 中的核心数据抽象。此交互式笔记本深入介绍了 torch.Tensor 类。
首先,让我们导入 PyTorch 模块。我们还将添加 Python 的数学模块来简化一些示例。

2.1 创建Tensor

创建张量的最简单方法是使用 torch.empty() 调用:

x = torch.empty(3, 4)
print(type(x))
print(x)

结果:

在这里插入图片描述
让我们拆分刚刚所做的事情:

  • 我们使用 torch 模块附带的众多工厂方法之一创建了一个张量。
  • 张量本身是二维的,这个例子有 3 行和 4 列。
  • 返回对象的类型是 torch.Tensor ,它是 torch.FloatTensor 的别名;默认的情况下,PyTorch 张量由 32 位浮点数填充。 (下面详细介绍数据类型。)
  • 打印张量时,您可能会看到一些看起来随机的值。 torch.empty() 调用为张量分配内存,但不使用任何值对其进行初始化 - 因此您看到的是分配时内存中的内容。

关于张量及其维数和术语的简要说明:

  • 有时你会看到称为vector的一维tensor。
  • 同样,二维tensor通常称为矩阵。
  • 任何超过二维的东西通常都被称为tensor。
    通常,你需要使用某个值来初始化张量。常见情况是全零、全一或随机值, torch 模块为所有这些提供工厂方法:
zeros = torch.zeros(2, 3)
print(zeros)

ones = torch.ones(2, 3)
print(ones)

torch.manual_seed(1000)
random = torch.rand(2, 3)
print(random)

在这里插入图片描述

2.2 随机Tensors 和 seeding

说到随机张量,您是否注意到紧随其前面的 torch.manual_seed() 调用?使用随机值初始化张量(例如模型的学习权重)很常见,但有时(尤其是在研究环境中)你需要确保结果的可重复性。手动设置随机数生成器的种子是实现此目的的方法。让我们更仔细地看看:

torch.manual_seed(1000)
random1 = torch.rand(2, 3)
print(random1)

random2 = torch.rand(2, 3)
print(random2)

torch.manual_seed(1000)
random3 = torch.rand(2, 3)
print(random3)

random4 = torch.rand(2, 3)
print(random4)

在这里插入图片描述

你应该在上面看到的是 random1 和 random3 具有相同的值, random2 和 random4 也是如此。手动设置 RNG 的种子会重置它,因此在大多数设置中,取决于随机数的相同计算应该提供相同的结果。

2.3 Tensor Shapes

通常,当你对两个或多个张量执行操作时,它们需要具有相同的形状 - 即具有相同的维度数以及每个维度中相同的单元数。为此,我们有 torch.*_like() 方法:

x = torch.empty(2, 2, 3)
print(x.shape)
print(x)

empty_like_x = torch.empty_like(x)
print(empty_like_x.shape)
print(empty_like_x)

zeros_like_x = torch.zeros_like(x)
print(zeros_like_x.shape)
print(zeros_like_x)

ones_like_x = torch.ones_like(x)
print(ones_like_x.shape)
print(ones_like_x)

rand_like_x = torch.rand_like(x)
print(rand_like_x.shape)
print(rand_like_x)

在这里插入图片描述
上面代码单元中的第一个新内容是在张量上使用 .shape 属性。此属性包含张量每个维度的范围的列表 - 在我们的示例中, x 是形状为 2 x 2 x 3 的三维张量。

下面,我们调用 .empty_like() 、 .zeros_like() 、 .ones_like() 和 .rand_like() 方法。使用 .shape 属性,我们可以验证这些方法中的每一个都返回具有相同维度和范围的张量。

创建将覆盖的张量的最后一种方法是直接从 PyTorch 集合指定其数据:

在这里插入图片描述

2.4 Tensor Data Types

有几种方法可以设置张量的数据类型:

a = torch.ones((2, 3), dtype=torch.int16)
print(a)

b = torch.rand((2, 3), dtype=torch.float64) * 20.
print(b)

c = b.to(torch.int32)
print(c)

在这里插入图片描述
设置张量基础数据类型的最简单方法是在创建时使用可选参数。在上面单元格的第一行中,我们为张量 a 设置 dtype=torch.int16 。当我们打印 a 时,我们可以看到它充满了 1 而不是 1. Python 的细节提示是这是一个整数类型而不是浮点数。

关于打印 a 需要注意的另一件事是,不像我们将 dtype 保留为默认值(32 位浮点)不同,打印张量还指定其 dtype.

我们可能还发现,我们从将张量的形状指定为一系列整数参数,到将这些参数分组到一个元组中。这并不是绝对必要的 - PyTorch 会将一系列初始的、未标记的整数参数作为张量形状 - 但在添加可选参数时,它可以使您的意图更具可读性。

设置数据类型的另一种方法是使用 .to() 方法。在上面的单元格中,我们以通常的方式创建一个随机浮点张量 b 。接下来,我们通过使用 .to() 方法将 b 转换为 32 位整数来创建 c 。请注意, c 包含与 b 相同的所有值,但被截断为整数。

可用的数据类型包括:

torch.bool
torch.int8
torch.uint8
torch.int16
torch.int32
torch.int64
torch.half
torch.float
torch.double
torch.bfloat

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MySQL在OpenEuler中的安装及数据库的备份

MySQL在OpenEuler中的安装 MySQL以二进制形式进行安装 1.获取软件包 (在进行获取时,检查网络是否通畅) wget -c https://mirrors.aliyun.com/mysql/MySQL-8.0/mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz2.创建用户组和用户 groupadd -g…

手把手教你:gitee的注册以及代码的提交(上)

个人主页(找往期文章包括但不限于本期文章中不懂的知识点):我要学编程(ಥ_ಥ)-CSDN博客 gitee的介绍 首先,我们得了解什么是gitee? gitee是一个基于Git的代码托管和研发协作平台,上面可以托管个人或者公…

[vscode]vue js部分结尾加分号

设置中寻找 semicolons确定在TypeScript的这个扩展中设置选项为insert

python celery使用队列

在celery的配置方法中有个参数叫task_routes,是用来设置不同的任务 消费不同的队列(也就是路由)。 格式如下: { ‘task name’: { ‘queue’: ‘queue name’ }}直接上代码,简单明了,目录格式如下&#x…

Satoshivm一文科普,手把手教你交互(bitget 钱包)

什么是 SatoshiVM? SatoshiVM 是一种去中心化的第 2 层解决方案,创新地将比特币网络的强大安全性和价值稳定性与以太坊虚拟机 (EVM) 的高级可编程性和灵活性相结合。 SatoshiVM 是区块链领域的一个突出功能,支持使用原生 BTC 作为 Gas&#x…

基于JavaWeb开发的智慧医院OA系统[附源码]

基于JavaWeb开发的智慧医院OA系统[附源码] 🍅 作者主页 央顺技术团队 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 文末获取源码联系方式 📝 🍅 查看下方微信号获取联系方式 承接各种定制系统 &#x1f4…

爬虫入门一

文章目录 一、什么是爬虫?二、爬虫基本流程三、requests模块介绍四、requests模块发送Get请求五、Get请求携带参数六、携带请求头七、发送post请求八、携带cookie方式一:放在请求头中方式二:放在cookie参数中 九、post请求携带参数十、模拟登…

BlackberryQ10 是可以安装 Android 4.3 应用的

BlackberryQ10 是可以安装 Android 4.3 应用的 最近淘了个 Q10 手机,非常稀罕它,拿着手感一流。这么好的东西,就想给它装点东西,但目前所有的应用都已经抛弃这个安卓版本了。 一、开发环境介绍 BlackBerry Q10 的 安卓版本是 4.…

String字符串,FastJson常用操作方法

JSON字符串操作 1、创建配置环境 # 引入测试包testImplementation group: org.springframework.boot, name: spring-boot-starter-test, version: 2.2.6.RELEASE # 创建测试类RunWith(SpringRunner.class)SpringBootTestpublic class JsonTest {Testpublic void test(){Syste…

IO进程线程day4作业

1、使用多进程完成两个文件的拷贝&#xff0c;父进程拷贝前一半&#xff0c;子进程拷贝后一半&#xff0c;父进程回收子进程的资源 代码&#xff1a; #include<myhead.h> int main(int argc, const char *argv[]) {//定义两个文件指针FILE *fp1NULL;FILE *fp2NULL;//创…

open3d 点云体素化

open3d 点云体素化 一、算法原理1.从点云到体素化&#xff08;主要函数&#xff09;2.从网格到体素化&#xff08;主要函数&#xff09; 二、代码三、结果1.从点云到体素化2.从网格到体素化 四、相关数据 一、算法原理 点云和三角网格是非常灵活但不规则的几何类型。体素网格是…

Mybatis | 初识Mybatis

初识Mybatis 目录: 初识Mybatis什么是Mybatis&#xff1f;Hibernate 和 MyBatis的区别&#xff1f;Mybatis的下载和使用Mybatis的工作原理 作者简介 &#xff1a;一只大皮卡丘&#xff0c;计算机专业学生&#xff0c;正在努力学习、努力敲代码中! 让我们一起继续努力学习&#…

微信小程序之会议OA个人中心后台交互

目录 获取用户昵称头像和昵称 小程序登录 登录-小程序 wx.checkSession wx.login wx.request 后台 准备数据表 反向生成工具生成 准备封装前端传过来的数据 小程序服器配置 导入微信小程序SDK application.yml WxProperties WxConfig WxAuthController 登录-小…

目录的共享与访问的实现

给用户机赋予读取文件的权利 创建文件夹&文件 点击属性–>共享–>共享&#xff08;S&#xff09; 点击添加–》给需要赋权的用户赋予相应的权限–>应用–确定 在赋权的用户机里winR–>‘\’‘IP地址&#xff08;主机&#xff09;’

常用的消息中间件RabbitMQ

目录 一、消息中间件 1、简介 2、作用 3、两种模式 1、P2P模式 2、Pub/Sub模式 4、常用中间件介绍与对比 1、Kafka 2、RabbitMQ 3、RocketMQ RabbitMQ和Kafka的区别 二、RabbiMQ集群 RabbiMQ特点 RabbitMQ模式⼤概分为以下三种: 集群中的基本概念&#xff1a; 集…

Open AI Sora的出现,大大改变ai视频内容生成赛道的格局

前言&#xff1a;在人工智能&#xff08;AI&#xff09;技术的迅猛发展下&#xff0c;我们见证了无数令人惊叹的创新&#xff0c;它们正逐渐重塑我们对可能性的认知。在这一浪潮中&#xff0c;OpenAI 的最新力作——Sora模型&#xff0c;以其在视频生成领域的革命性突破&#x…

mysql调优实战

EXPLAIN执行分析 id:值越大越先执行相同时&#xff0c;由上向下执行。 possible_key: 可能走索引的键。 key&#xff1a;真正走索引的键rows:根据表统计信息及索引选用情况&#xff0c;大致估算出找到所需的记录所需要读取的行数&#xff0c;也就是说&#xff0c;用的越少越好 …

动态获取 微信小程序appid / 自定义启动命令

官网&#xff1a;https://uniapp.dcloud.net.cn/collocation/package.html#%E7%94%A8%E6%B3%95 小程序开发完成之后需要一套代码多个小程序使用&#xff0c;每次都需要在manifest.json文件中手动修改&#xff0c;大大增加了开发的复杂度。 官网&#xff1a;https://uniapp.dcl…

市场复盘总结 20240220

仅用于记录当天的市场情况&#xff0c;用于统计交易策略的适用情况&#xff0c;以便程序回测 短线核心&#xff1a;不参与任何级别的调整&#xff0c;采用龙空龙模式 一支股票 10%的时候可以操作&#xff0c; 90%的时间适合空仓等待 二进三&#xff1a; 进级率中 19% 最常用…

Android---Retrofit实现网络请求:Java 版

简介 在 Android 开发中&#xff0c;网络请求是一个极为关键的部分。Retrofit 作为一个强大的网络请求库&#xff0c;能够简化开发流程&#xff0c;提供高效的网络请求能力。 Retrofit 是一个建立在 OkHttp 基础之上的网络请求库&#xff0c;能够将我们定义的 Java 接口转化为…