当前位置: 首页 > news >正文

Pytorch使用教学3-特殊张量的创建与类型转化

在这里插入图片描述

1 特殊张量的创建

numpy类似,PyTorch中的张量也有很多特殊创建的形式。

zeros:全0张量

# 形状为2行3列
torch.zeros([2, 3])
# tensor([[0., 0., 0.],
#         [0., 0., 0.]])

ones:全1张量

# 形状为2行3列
torch.ones([2, 3])
# tensor([[1., 1., 1.],
#         [1., 1., 1.]])

eye:单位矩阵

torch.eye(3)
# tensor([[1., 0., 0.],
#         [0., 1., 0.],
#         [0., 0., 1.]])

diag:对角矩阵

在PyTorch中,需要利用一维张量去创建对角矩阵。

torch.diag(torch.tensor([1,2,3,4,5]))
# tensor([[1, 0, 0, 0, 0],
#         [0, 2, 0, 0, 0],
#         [0, 0, 3, 0, 0],
#         [0, 0, 0, 4, 0],
#         [0, 0, 0, 0, 5]])

rand:服从0-1均匀分布的张量

torch.rand(2, 3)
# tensor([[0.2154, 0.7666, 0.7396],
#         [0.3063, 0.9024, 0.0047]])

randn:服从标准正态分布的张量

torch.randn(3, 3)
# tensor([[ 1.2200, -1.0587,  1.0716],
#        [-1.2465, -0.3391,  1.2131],
#        [ 0.7201,  1.2034, -1.0660]])

normal服从指定正态分布的张量

# 均值为2,标准差为3的张量,形状为2行2列
torch.normal(2, 3, size = (2, 2))
# tensor([[9.0815, 0.9216],
#         [0.9856, 4.2866]])

randint整数随机采用

torch.randint(1, 10, size = [2, 4])
# tensor([[1, 8, 2, 3],
#         [5, 3, 5, 7]])

arange/linspace:生成数列

# 从1-5,左闭右开
torch.arange(5) 
# tensor([0, 1, 2, 3, 4])# 从1-5,左右都包含,等距取3个数
torch.linspace(1, 5, 3)
# tensor([1., 3., 5.])

empty:生成未初始化的指定形状矩阵

它生成的数近似于0,但不为0

torch.empty(2, 3)
# tensor([[-2.1193e-17,  4.5602e-41,  3.0720e-09],
#         [ 3.0630e-41,  0.0000e+00,  0.0000e+00]])

full:根据指定形状,填充指定数值

# 填充形状为2行4列,填充数值为2
torch.full([2, 4], 2)
# tensor([[2, 2, 2, 2],
#         [2, 2, 2, 2]])

2 _like后缀的用法

创建指定形状的数组,在上述函数后面加上_like即可。比如现在我们有一个张量t,形状为2行3列:

t = torch.tensor([[1, 2, 3], [4, 5, 6]])

我们想创建一个1-100随机数的张量,形状与张量t相同:

torch.randint_like(t, 1, 100)
# tensor([[57, 67, 77],
#         [76, 45, 31]])

上述函数都有_like方法,需要注意的是该方法转化需要注意转化前后数据类型一致的问题,若数据类型不一致,则会报错:

# randn为float型,而t为int型
# 转换数据类型不一致,就会报错
torch.randn_like(t)
# RuntimeError

3 张量与其他数据类型的转换

张量、数组和列表是较为相似的三种类型对象,在实际操作过程中,经常会涉及三种对象的相互转化。

3.1 .numpy()/np.array():张量转化为数组

# 使用.numpy()
t.numpy()
# array([1, 2, 3])# 使用np.array()
np.array(t)
# array([1, 2, 3])

3.2 tolist()/list():张量转化为列表

# 使用tolist()
t = torch.tensor([1, 2, 3])
t.tolist()
# [1, 2, 3]

需要注意的是,在使用list()时,此时转化的列表是由一个个零维张量构成的列表,而非张量的数值构成的列表。可理解为1维张量是由0维张量组成的。

# 使用list(),结果是零维张量构成的列表,为标量
list(t)
# [tensor(1), tensor(2), tensor(3)]

3.3 .item():标量转化为数值

在很多情况下,我们需要将最终计算的结果张量转为单独的数值进行输出。

n = torch.tensor(1)
print(n)
# tensor(1)# 使用.item()方法将标量转为python中的数值
n.item()
# 1

4 张量的深拷贝

与python中其他对象类型一样,等号赋值操作实际上是浅拷贝,需要进行深拷贝,则需要使用clone方法。

4.1 浅拷贝

t1 = torch.arange(10)
t2 = t1
t2[1] = 10
print(t1)
# t1也被改变了
# tensor([ 0, 10,  2,  3,  4,  5,  6,  7,  8,  9])
print(t2)
# tensor([ 0, 10,  2,  3,  4,  5,  6,  7,  8,  9])

4.2 clone()深拷贝

t1 = torch.arange(10)
t2 = t1.clone()
t2[1] = 10# t1并没有被改变
print(t1)
# tensor([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])# t2的第二个元素变成了10
print(t2)
# tensor([ 0, 10,  2,  3,  4,  5,  6,  7,  8,  9])

Pytorch张量操作大全:

Pytorch使用教学1-Tensor的创建
Pytorch使用教学2-Tensor的维度
Pytorch使用教学3-特殊张量的创建与类型转化
Pytorch使用教学4-张量的索引
Pytorch使用教学5-视图view与reshape的区别
Pytorch使用教学6-张量的分割与合并
Pytorch使用教学7-张量的广播
Pytorch使用教学8-张量的科学运算
Pytorch使用教学9-张量的线性代数运算
Pytorch使用教学10-张量操作方法大总结

有关Pytorch建模相关的AI干货请扫码关注公众号「AI有温度」阅读获取
在这里插入图片描述

相关文章:

Pytorch使用教学3-特殊张量的创建与类型转化

1 特殊张量的创建 与numpy类似,PyTorch中的张量也有很多特殊创建的形式。 zeros:全0张量 # 形状为2行3列 torch.zeros([2, 3]) # tensor([[0., 0., 0.], # [0., 0., 0.]])ones:全1张量 # 形状为2行3列 torch.ones([2, 3]) # tensor([[1., 1., 1.], # …...

【日记】办个护照不至于有这种刑事罪犯一样的待遇吧……(737 字)

正文 暴晒,中午出去骑共享单车,座垫都不敢坐。 至于为什么,中午觉都不睡跑出去,是因为今天他们办承兑汇票的业务,搞了一天,中午不休息,说可能还会用到我的指纹,让我 on call。我心想…...

【矩阵微分】在不涉及张量的前提下计算矩阵对向量的导数并写出二阶泰勒展开

本篇内容摘自CMU 16-745最优控制的第10讲 “Nonlinear Trajectory Optimization”。 如何在不涉及张量运算的前提下,计算矩阵对向量的导数并写出二阶泰勒展开 在多维微积分中,计算矩阵对向量的导数和二阶泰勒展开是一项重要的任务。本文将介绍如何在不涉…...

数据结构之判断平衡二叉树详解与示例(C,C++)

文章目录 AVL树定义节点定义计算高度获取平衡因子判断是否为平衡二叉树完整示例代码结论 在计算机科学中,二叉树是一种非常重要的数据结构。它们被广泛用于多种算法中,如排序、查找等。然而,普通的二叉树在极端情况下可能退化成链表&#xff…...

深入解析仓颉编程语言:函数式编程的核心特性

摘要 仓颉编程语言以其独特的语法和功能,为开发者提供了强大的编程工具。本文将深入探讨仓颉语言中的嵌套函数、Lambda 表达式和闭包等函数式编程的核心特性,帮助开发者更好地理解和利用这些工具。 引言 在现代编程语言中,函数式编程范式越…...

springboot惠农服务平台-计算机毕业设计源码50601

目录 1 绪论 1.1 研究背景 1.2研究意义 1.3论文结构与章节安排 2 惠农服务平台app 系统分析 2.1 可行性分析 2.2 系统功能分析 2.3 系统用例分析 2.4 系统流程分析 2.5本章小结 3 惠农服务平台app 总体设计 3.1 系统功能模块设计 3.2 数据库设计 表access_token (…...

Lua脚本简单理解

目录 1.安装 2.语法 2.1Lua数据类型 2.2变量 2.3lua循环 2.4流程控制 2.5函数 2.6运算符 2.7关系运算符 3.lua脚本在redis中的使用 3.1lua脚本再redis简单编写 3.2普通锁Lua脚本 3.3可重入锁lua脚本 1.安装 centos安装 安装指令: yum -y update yum i…...

AutoSAR自适应平台架构总览--AP的初认识

AutoSAR自适应平台架构总览:AP 基础设施层(Foundation Layer)核心操作系统(Core OS)通信管理(Communication Management) 服务层(Services Layer)诊断服务(Diagnostics S…...

GPT-4o Mini:探索最具成本效益的小模型在软件开发中的应用

随着人工智能技术的迅猛发展,自然语言处理(NLP)领域也取得了显著的进步。OpenAI 最新发布的 GPT-4o Mini 模型,以其卓越的性能和极具竞争力的价格,成为了广大开发者关注的焦点。作为一名长期关注人工智能及其在软件开发…...

{Spring Boot 原理篇} Spring Boot自动装配原理

SpringBootApplication 1,Spring Boot 应用启动,SpringBootApplication标注的类就是启动类,它去实现配置类中的Bean的自动装配 SpringBootApplication public class SpringbootRedis01Application {public static void main(String[] args)…...

QEMU源码全解析 —— CPU虚拟化(10)

接前一篇文章: 本文内容参考: 《趣谈Linux操作系统》 —— 刘超,极客时间 《QEMU/KVM》源码解析与应用 —— 李强,机械工业出版社 《深度探索Linux系统虚拟化原理与实现》—— 王柏生 谢广军, 机械工业出版社 特此致谢! 二、x86架构CPU虚拟化 3. VMX 上一回讲解了支…...

46、PHP实现矩阵中的路径

题目: PHP实现矩阵中的路径 描述: 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。 路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向…...

c++笔记2

目录 2.2 栈底(bottom) } 大数乘大数 节点:包含一个数据元素及若干指向子树分支的信息 。 节点的度:一个节点拥有子树的数目称为节点的度 。 叶子节点:也称为终端节点,没有子树的节点或者度为零的节点…...

通过Lua脚本手写redis分布式锁

1、手写 Redis 分布式锁,包括上锁、解锁、自动续期。 此功能实现采用 Lua脚本实现,Lua脚本可以保证原子性。 setnx可以实现分布式锁,但是无法实现可重入锁,所以用hset来代替setnx实现可重入的分布式锁。 -- lock if redis.call…...

解析银行个人征信系统

银行个人征信系统,也被称为个人信用信息基础数据库或金融信用信息基础数据库,是我国社会信用体系的重要基础设施。该系统由中国人民银行组织国内相关金融机构建立,旨在依法采集、整理、保存、加工自然人(法人)及其他组…...

AttributeError: ‘list‘ object has no attribute ‘text‘

AttributeError: ‘list‘ object has no attribute ‘text‘ 目录 AttributeError: ‘list‘ object has no attribute ‘text‘ 【常见模块错误】 【解决方案】 示例代码 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页,我是博主英…...

Codeforces Round 874 (Div. 3)(A~D题)

A. Musical Puzzle 思路: 用最少的长度为2的字符串按一定规则拼出s。规则是&#xff1a;前一个字符串的尾与后一个字符串的首相同。统计s中长度为2的不同字符串数量。 代码: #include<bits/stdc.h> #include <unordered_map> using namespace std; #define N 20…...

[Python][基础语法]详细讲解

目录 1.顺序语句2.条件语句3.缩进和代码块4.空语句 pass5.循环语句1.while2.for3.continue4.break ∞.积累 1.顺序语句 默认情况下&#xff0c;Python的代码执行顺序是按照从上到下的顺序&#xff0c;依次执行# 输出结果&#xff1a;"123" print("1") pri…...

Layui---输入事件

输入实时监听 //监听表单单选框复选框选择 form.on(radio, function (data) {console.log(data.value); //得到被选中的值 });//监听表单下拉菜单选择form.on(select, function (data) //监听表单下拉菜单选择form.on(select, function (data) ​ //监听表单复选框选择form.…...

甄选范文“论软件测试中缺陷管理及其应用”软考高级论文,系统架构设计师论文

论文真题 软件缺陷指的是计算机软件或程序中存在的某种破坏正常运行能力的问题、错误,或者隐藏的功能缺陷。缺陷的存在会导致软件产品在某种程度上不能满足用户的需要。在目前的软件开发过程中,缺陷是不可避免的。软件测试是发现缺陷的主要手段,其核心目标就是尽可能多地找…...

像素风格技能图标自动生成:Python+Pillow实现模板化设计

1. 项目概述与核心价值最近在和一些做独立开发者和内容创作者的朋友聊天时&#xff0c;发现一个普遍痛点&#xff1a;大家手头都有不少好想法&#xff0c;但一到具体执行&#xff0c;尤其是需要制作宣传素材时&#xff0c;就卡住了。比如&#xff0c;想给自己的新App做个宣传图…...

RTKLIB 2.4.3项目在Visual Studio 2019中的工程化配置:告别零散文件,打造清晰结构

RTKLIB 2.4.3项目在Visual Studio 2019中的工程化配置&#xff1a;告别零散文件&#xff0c;打造清晰结构 对于卫星导航领域的开发者而言&#xff0c;RTKLIB无疑是一个绕不开的开源项目。这个由日本学者Tomoji Takasu开发的GNSS定位软件&#xff0c;以其强大的功能和开放的架构…...

AI智能体工具搜索系统:从MCP协议到语义检索的工程实践

1. 项目概述&#xff1a;从“工具搜索”到“智能体工具箱”的进化 最近在折腾AI智能体&#xff08;Agent&#xff09;开发的朋友&#xff0c;估计都绕不开一个核心问题&#xff1a;如何让智能体高效、准确地调用外部工具&#xff1f;无论是让它帮你查天气、发邮件&#xff0c;还…...

Node.js性能预测工具nodestradamus:从监控到预警的实践指南

1. 项目概述与核心价值最近在折腾一些服务器监控和性能预测的活儿&#xff0c;偶然间在GitHub上发现了一个叫nodestradamus的项目&#xff0c;作者是ChristosGrigoras。这个名字挺有意思&#xff0c;结合了“Node.js”和“诺查丹玛斯”&#xff08;那位著名的预言家&#xff09…...

别再满世界找Kettle了!手把手教你定位最新官方下载源(附版本选择建议)

开源工具下载困境突围指南&#xff1a;以Kettle为例构建高效溯源方法论 在开源工具的使用过程中&#xff0c;最令人头疼的莫过于某天突然发现熟悉的下载链接失效&#xff0c;官网改版后找不到下载入口&#xff0c;或是搜索引擎返回的结果全是过时的教程。这种情况不仅发生在Ke…...

不止于安装:在 Ubuntu 20.04 上为 GAMMA 配置完整的 InSAR 科研环境(含 Python 依赖)

不止于安装&#xff1a;在 Ubuntu 20.04 上为 GAMMA 配置完整的 InSAR 科研环境&#xff08;含 Python 依赖&#xff09; 当你在Ubuntu 20.04上成功安装GAMMA后&#xff0c;可能会发现这仅仅是开始。真正的挑战在于构建一个完整、稳定的科研环境&#xff0c;让InSAR数据处理流程…...

AI教材生成神器来袭!低查重工具一键搞定30万字教材编写!

利用 AI 工具高效编写教材 整理教材的知识点真的需要“精雕细琢”&#xff0c;最难的地方在于平衡与衔接&#xff01;我们要么会担忧重要的知识点遗漏&#xff0c;要么又很难掌握合适的难度梯度。小学教材常常内容晦涩难懂&#xff0c;学生们难以理解&#xff1b;而高中教材往…...

血管分割新突破:详解DSCNet中的蛇形卷积如何解决管状结构难题

血管分割新突破&#xff1a;详解DSCNet中的蛇形卷积如何解决管状结构难题 在医学影像分析领域&#xff0c;血管分割一直是个令人头疼的问题。想象一下&#xff0c;当你面对一张OCTA&#xff08;光学相干断层扫描血管成像&#xff09;图像时&#xff0c;那些细如发丝、蜿蜒曲折…...

Mac玩转老游戏:手把手教你用Wineskin配置RPG Maker游戏所需RTP环境

Mac玩转老游戏&#xff1a;手把手教你用Wineskin配置RPG Maker游戏所需RTP环境 在Mac上重温经典RPG游戏是许多怀旧玩家的梦想&#xff0c;但RPG Maker游戏往往依赖Windows特有的运行时包&#xff08;RTP&#xff09;&#xff0c;这让Mac用户望而却步。本文将带你深入探索如何利…...

开关电源传导EMI超标?手把手教你用π型滤波器搞定(附SCT2450实测数据)

开关电源传导EMI超标&#xff1f;手把手教你用π型滤波器搞定&#xff08;附SCT2450实测数据&#xff09; 在电源设计领域&#xff0c;传导EMI超标是工程师们经常遇到的棘手问题。当你的产品在EMC实验室测试失败时&#xff0c;那种挫败感相信每个硬件工程师都深有体会。传导噪声…...