深度学习Pytorch框架Tensor张量
极市平台
共 3569字,需浏览 8分钟
· 2022-03-03
极市导读
本文主要介绍了Tensor的裁剪运算、索引与数据筛选、组合/拼接、切片、变形操作、填充操作和Tensor的频谱操作(傅里叶变换)。>>加入极市CV技术交流群,走在计算机视觉的最前沿
1 Tensor的裁剪运算
对Tensor中的元素进行范围过滤 常用于梯度裁剪(gradient clipping),即在发生梯度离散或者梯度爆炸时对梯度的处理 torch.clamp(input, min, max, out=None) → Tensor:将输入 input
张量每个元素的夹紧到区间 [min,max],并返回结果到一个新张量。
2 Tensor的索引与数据筛选
torch.where(codition,x,y):按照条件从x和y中选出满足条件的元素组成新的tensor,输入参数condition:条件限制,如果满足条件,则选择a,否则选择b作为输出。 torch.gather(input,dim,index,out=None):在指定维度上按照索引赋值输出tensor torch.inex_select(input,dim,index,out=None):按照指定索引赋值输出tensor torch.masked_select(input,mask,out=None):按照mask输出tensor,输出为向量 torch.take(input,indices):将输入看成1D-tensor,按照索引得到输出tensor torch.nonzero(input,out=None):输出非0元素的坐标
import torch
#torch.where
a = torch.rand(4, 4)
b = torch.rand(4, 4)
print(a)
print(b)
out = torch.where(a > 0.5, a, b)
print(out)
print("torch.index_select")
a = torch.rand(4, 4)
print(a)
out = torch.index_select(a, dim=0,
index=torch.tensor([0, 3, 2]))
#dim=0按列,index取的是行
print(out, out.shape)
print("torch.gather")
a = torch.linspace(1, 16, 16).view(4, 4)
print(a)
out = torch.gather(a, dim=0,
index=torch.tensor([[0, 1, 1, 1],
[0, 1, 2, 2],
[0, 1, 3, 3]]))
print(out)
print(out.shape)
#注:从0开始,第0列的第0个,第一列的第1个,第二列的第1个,第三列的第1个,,,以此类推
#dim=0, out[i, j, k] = input[index[i, j, k], j, k]
#dim=1, out[i, j, k] = input[i, index[i, j, k], k]
#dim=2, out[i, j, k] = input[i, j, index[i, j, k]]
print("torch.masked_index")
a = torch.linspace(1, 16, 16).view(4, 4)
mask = torch.gt(a, 8)
print(a)
print(mask)
out = torch.masked_select(a, mask)
print(out)
print("torch.take")
a = torch.linspace(1, 16, 16).view(4, 4)
b = torch.take(a, index=torch.tensor([0, 15, 13, 10]))
print(b)
#torch.nonzero
print("torch.take")
a = torch.tensor([[0, 1, 2, 0], [2, 3, 0, 1]])
out = torch.nonzero(a)
print(out)
#稀疏表示
3 Tensor的组合/拼接
torch.cat(seq,dim=0,out=None):按照已经存在的维度进行拼接 torch.stack(seq,dim=0,out=None):沿着一个新维度对输入张量序列进行连接。序列中所有的张量都应该为相同形状。
print("torch.stack")
a = torch.linspace(1, 6, 6).view(2, 3)
b = torch.linspace(7, 12, 6).view(2, 3)
print(a, b)
out = torch.stack((a, b), dim=2)
print(out)
print(out.shape)
print(out[:, :, 0])
print(out[:, :, 1])
4 Tensor的切片
torch.chunk(tensor,chunks,dim=0):按照某个维度平均分块(最后一个可能小于平均值) torch.split(tensor,split_size_or_sections,dim=0):按照某个维度依照第二个参数给出的list或者int进行分割tensor
5 Tensor的变形操作
torch().reshape(input,shape) torch().t(input):只针对2D tensor转置 torch().transpose(input,dim0,dim1):交换两个维度 torch().squeeze(input,dim=None,out=None):去除那些维度大小为1的维度 torch().unbind(tensor,dim=0):去除某个维度 torch().unsqueeze(input,dim,out=None):在指定位置添加维度,dim=-1在最后添加 torch().flip(input,dims):按照给定维度翻转张量 torch().rot90(input,k,dims):按照指定维度和旋转次数进行张量旋转
import torch
a = torch.rand(2, 3)
print(a)
out = torch.reshape(a, (3, 2))
print(out)
print(a)
print(torch.flip(a, dims=[2, 1]))
print(a)
print(a.shape)
out = torch.rot90(a, -1, dims=[0, 2]) #顺时针旋转90°
print(out)
print(out.shape)
6 Tensor的填充操作
torch.full((2,3),3.14)
7 Tensor的频谱操作(傅里叶变换)
如果觉得有用,就请分享到朋友圈吧!
公众号后台回复“CVPR21检测”获取CVPR2021目标检测论文下载~
# CV技术社群邀请函 #
备注:姓名-学校/公司-研究方向-城市(如:小极-北大-目标检测-深圳)
即可申请加入极市目标检测/图像分割/工业检测/人脸/医学影像/3D/SLAM/自动驾驶/超分辨率/姿态估计/ReID/GAN/图像增强/OCR/视频理解等技术交流群
每月大咖直播分享、真实项目需求对接、求职内推、算法竞赛、干货资讯汇总、与 10000+来自港科大、北大、清华、中科院、CMU、腾讯、百度等名校名企视觉开发者互动交流~
评论
面试官:MySQL 上亿大表,如何深度优化?
来源:cnblogs.com/YangJiaXin/p/10828244.html背景分析测试实施索引优化后delete大表优化为小批量删除总结前段时间刚入职一家公司,就遇上这事!背景XX实例(一主一从)xxx告警中每天凌晨在报SLA报警,该报警的意思是存在一定的主从延迟(若在此时发生主从切换,需要
好好学java
0
前端框架新势力大盘点
点击上方 前端Q,关注公众号回复加群,加入前端Q技术交流群近年来,前端领域快速发展,新的框架不断涌现,为开发者提供了更多选择和解决方案。尽管 React、Vue、Angular、Next.js、Preact 等老牌框架依然稳坐市场主流,但新势力前端框架的崛起也为特定场景带来了更佳的适配和优
前端Q
0
文末送书 | 大模型时代下如何学习云原生
《containerd 原理剖析与实战》新书内购中,点击阅读原文,限时 69.9 元购买。文末免费赠书大模型与云原生近年来,大语言模型的热度可谓是愈发高涨,尤其是今年年初 Sora 的出现,更是让全球再次看到了AIGC 的巨大威力。Sora 生成实例视频---几头巨大的长毛猛犸踏着积雪的草地而来在当
云原生实验室
10
轻松学习C#:百度行驶证C++离线SDK接入详解
效果 先看最终效果SDK 拿到完整包如图,687M解压后看看内容发现有个readme.txt,那就先看看内容1:用vs2015打开sln工程,最好用vs2015 comunity版本,可微软官网下载。2:sdk的doc目录有pdf接口文档。3:工程总入口main.cpp、请参考示例实现您的功能。4:
DotNet NB
9
日语五十音图学习难吗?
学习日语的初学者们都知道,我们学习日语最初就必须要接触日语五十音图,虽然相对其他语言来说,五十音图挺不是很难学,但是很多初学者可能会记不住,别担心,老师为大家带来了学习经验分享,一起来看看吧!五十音图就是日语最基础的基础,也就是地基。由于日语的元音比较单调,只有a/i/u/e/o这五种,再和各种辅音
python教程
0
Tensor Cores 使用介绍
作者丨进击的Killua来源丨https://zhuanlan.zhihu.com/p/671312675编辑丨GiantPandaCV概要介绍TensorCore 是从Nvidia Volta 架构GPU开始支持的重要特性,使CUDA开发者能够使用混合精度来获得更高的吞吐量,而不牺牲精度。Tens
GiantPandaCV
4
人工智能周刊#17:Llama3、微调 LLMs 的 PyTorch 原生库、李彦宏内部讲话、900 个最受欢迎的AI 工具
在内部讲话中,李彦宏对大模型开源与闭源的路线选择,以及 AI 创业者应该专注模型还是应用等业界焦点话题,发表了自己的看法。人工智能周刊:关注Python、机器学习、深度学习、大模型等硬核技术本期目录:1、Meta 最新发布 Llama 3 80 亿和 700 亿参数版本2、「抱抱脸」公
机器学习算法与Python实战
10
【深度学习】一文看懂注意力机制
注意力是一种在广泛的神经结构中使用的越来越流行的机制。由于这一领域的快速发展,仍然缺乏对注意力的系统概述。在本文中,讨论了以往工作的不同方面,注意力机制的可能用途,并描述了该领域的主要研究工作和公开挑战。往期精彩回顾适合初学者入门人工智能的路线及资料下载(图文+视频)机器学习入门系列下载机器学习及深
机器学习初学者
10