Pytorch 张量操作(创建,变形,元素选取,拼接)【Pytorch 基础第一话】

pytorch学习笔记1:张量 目录 Tensor与numpy相互转换: torch.ones(),torch.add(),torch.zeros(),torch.squeeze() Tensor与numpy相互转换: import torch x=torch.Tensor(2,3)#生成一个4*5的Tensor张量 将Tensor转换为numpy数组 y=x.numpy() 将numpy数组转换为Tenso... 阅读详情

本文集成代码文件下载地址:

Debug 预备工作

为了方便我们查看张量数据,我们先编写一个用于输出张量数据的函数ptf_tensor

import torch
import random
import string

def ptf_tensor(t,tag='tensor_'):    
    salt = ''.join(random.sample(string.ascii_letters + string.digits, 5))
    if (tag=='tensor_'):tag=tag+salt
    print('\nThe info of {}:\n#############################\n  @dims: {}\n  @size: {}\n  @ele_sum: {}\n  @dtype: {}\n  @data:\n{}\n#############################\n'.format(tag,t.dim(),t.size(),t.numel(),t.dtype,t))

使用方法:ptf_tensor(张量,张量名字或者其他标记信息)
举例:

t2=torch.tensor([[0,1,2],[3,4,5],[6,7,8]])
ptf_tensor(t2,'common')

会有如下输出:

The info of common:
#############################
  @dims: 2
  @size: torch.Size([3, 3])
  @ele_sum: 9
  @dtype: torch.int64
  @data:
tensor([[0, 1, 2],
        [3, 4, 5],
        [6, 7, 8]])
#############################

张量创建

(1)指定数据
t2=torch.tensor([[0,1,2],[3,4,5],[6,7,8]])
ptf_tensor(t2,'common')
(2)特殊的张量

全0的,对角线是1的(单位矩阵),全部元素都是某个值的…

t=torch.zeros(3,3,1)
ptf_tensor(t,'zeros') # size(3,3,1)

t=torch.full((3,3),5.)
ptf_tensor(t,'full') # size(3,3), All elements are 5.

t=torch.eye(5)
ptf_tensor(t,'eye') # 对角线是1,其余是0 ,单位矩阵
(3)随机张量

指定最小最大值,和默认0-1

## 创建随机的张量:
t=torch.randint(low=0,high=4,size=(3,3)) #指定最大最小值
ptf_tensor(t,'randint') #创建离散分布的int类型随机数

t=torch.rand(3,3)
ptf_tensor(t,'rand') #创建 0-1之间的随机数
(4)数列

后面我们会经常使用torch.arange来创建示例数据调试

## 创建数列:
t=torch.arange(0,8,step=2) #差是2 的等差数列
ptf_tensor(t,'arange array') 

t=torch.arange(24)
ptf_tensor(t,'default step=1') # 默认0-23 step=1

张量变形

(1)reshape 重塑

reshape必须保证元素数量一致,如24=2 ∗*∗ 6 ∗*∗ 2=12 ∗*∗ 2

t=torch.arange(24)
ptf_tensor(t,'before reshape') 
t2=t.reshape(2,6,2)
ptf_tensor(t2,'after reshape') 
(2) squeeze [压缩dim] 和 unsqueeze [增加dim]

squeeze可以删除多余的 dim,相反,unsqueeze可以增加新的dim

## squeeze(del) 和 unsqueeze(add)
t=torch.arange(12)
ptf_tensor(t)
t2=t.unsqueeze(dim=0)
ptf_tensor(t2,tag='t add dim=0')
t3=t.unsqueeze(dim=1)
ptf_tensor(t3,tag='t add dim=1')
t4=t3.squeeze(dim=1)
ptf_tensor(t4,tag='t del dim=1')

会有如下输出:

The info of tensor_3jC5N:
#############################
  @dims: 1
  @size: torch.Size([12])
  @ele_sum: 12
  @dtype: torch.int64
  @data:
tensor([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])
#############################


The info of t add dim=0:
#############################
  @dims: 2
  @size: torch.Size([1, 12])
  @ele_sum: 12
  @dtype: torch.int64
  @data:
tensor([[ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11]])
#############################


The info of t add dim=1:
#############################
  @dims: 2
  @size: torch.Size([12, 1])
  @ele_sum: 12
  @dtype: torch.int64
  @data:
tensor([[ 0],
        [ 1],
        [ 2],
        [ 3],
        [ 4],
        [ 5],
        [ 6],
        [ 7],
        [ 8],
        [ 9],
        [10],
        [11]])
#############################


The info of t delete dim=1:
#############################
  @dims: 1
  @size: torch.Size([12])
  @ele_sum: 12
  @dtype: torch.int64
  @data:
tensor([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])
#############################

张量元素选取

(1)数列元素选取
t=torch.arange(0,50,step=6)
ptf_tensor(t,'raw t')
ptf_tensor(t[3:6]) #选择index from 3 to 6
ptf_tensor(t[-2:],'from back select')
(2)定位选择

使用 index_select 函数

# 张量部分元素的选取
t=torch.arange(24).reshape(2,6,2)
index = torch.tensor([3,4]) # 选择第index=3和4的元素
ptf_tensor(t,'t')
ptf_tensor(t.index_select(1,index)) #在 dim=1 上选取
# 提示:观察【2,6,2】-->【2,2,2】

会有如下输出:

The info of t:
#############################
  @dims: 3
  @size: torch.Size([2, 6, 2])
  @ele_sum: 24
  @dtype: torch.int64
  @data:
tensor([[[ 0,  1],
         [ 2,  3],
         [ 4,  5],
         [ 6,  7],
         [ 8,  9],
         [10, 11]],

        [[12, 13],
         [14, 15],
         [16, 17],
         [18, 19],
         [20, 21],
         [22, 23]]])
#############################


The info of tensor_r0VpN:
#############################
  @dims: 3
  @size: torch.Size([2, 2, 2])
  @ele_sum: 8
  @dtype: torch.int64
  @data:
tensor([[[ 6,  7],
         [ 8,  9]],

        [[18, 19],
         [20, 21]]])
#############################

张量拼接

使用 cat 函数

# 张量的拓展和拼接
tp=torch.arange(12).reshape(3,4)
ptf_tensor(tp,'tp')
tn=-tp
ptf_tensor(tn,'tn')
tc0=torch.cat([tp,tn],dim=0) # 在dim=0 处拼接
ptf_tensor(tc0,'tc0 dim=0 cat')
tc1=torch.cat([tp,tn],dim=1) #在 dim=1 处拼接
ptf_tensor(tc1,'tc1 dim=1 cat') 

会有如下输出:

The info of tp:
#############################
  @dims: 2
  @size: torch.Size([3, 4])
  @ele_sum: 12
  @dtype: torch.int64
  @data:
tensor([[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11]])
#############################


The info of tn:
#############################
  @dims: 2
  @size: torch.Size([3, 4])
  @ele_sum: 12
  @dtype: torch.int64
  @data:
tensor([[  0,  -1,  -2,  -3],
        [ -4,  -5,  -6,  -7],
        [ -8,  -9, -10, -11]])
#############################


The info of tc0 dim=0 cat:
#############################
  @dims: 2
  @size: torch.Size([6, 4])
  @ele_sum: 24
  @dtype: torch.int64
  @data:
tensor([[  0,   1,   2,   3],
        [  4,   5,   6,   7],
        [  8,   9,  10,  11],
        [  0,  -1,  -2,  -3],
        [ -4,  -5,  -6,  -7],
        [ -8,  -9, -10, -11]])
#############################


The info of tc1 dim=1 cat:
#############################
  @dims: 2
  @size: torch.Size([3, 8])
  @ele_sum: 24
  @dtype: torch.int64
  @data:
tensor([[  0,   1,   2,   3,   0,  -1,  -2,  -3],
        [  4,   5,   6,   7,  -4,  -5,  -6,  -7],
        [  8,   9,  10,  11,  -8,  -9, -10, -11]])
#############################
pytorch张量维度操作(拼接、维度扩展、压缩、转置、重复) 目录一、拼接张量二、扩大张量2、torch.()三、压缩张量四、重复张量五、缩小张量六、张量变形 z七、重设张量尺寸八、置换张量维度() 阅读详情

相关推荐

PyTorch常用的张量创建、变形及运算总结(速查表)

PyTorch张量常用的创建方式及数学运算总结 1. 张量(tensor)的创建 1.1 torch.Tensor()与torch.tensor() torch.Tensor(3,2)返回一个尺寸为3*2的未初始化的张量 torch.Tensor(data)返回一个torch.FloatTensor类型的data torch.tensor(3, 2)报错,tensor函数参数必须为一个基本数据类型或引用数据类型数据如整型、浮点型或列表 torch.tensor(data)返回一个给定数值的张量 区别: to

CaiNiao_hu的博客 1987

【Pytorch】Tensor的元素操作

Tensor的操作 Tensor的主要运算操作通常分为四大类: Reshaping operations(重塑操作) Element-wise operations(元素操作) Reduction operations(缩减操作) Access operations(访问操作) 元素操作 ​ 元素在张量中的位置由定位每个元素的索引决定,而元素操作是对张量元素的运算,这些张量元素在张量中对应或有相同的索引位置,这里需要重点强调的是,两个张量必须具有相同的形状才能执行一个元素操作,而具有相同的形状意味着张量

zzy_NIC的博客 9413

掌握 PyTorch 张量的底层逻辑:一文吃透 Tensor 的创建、变形与计算核心操作

本文深入解析PyTorch中的核心数据结构——张量(Tensor),从本质理解到实战操作全面覆盖。文章首先强调张量在深度学习中的基础地位,将其定义为支持GPU加速、自动求导的多维数据容器。通过对比NumPy数组,凸显PyTorch张量特性。详细介绍了张量的创建方法(包括与NumPy互转)、基本操作(形状查看、维度变换、拼接分割、数值计算等)以及GPU加速技巧。特别讲解了张量与Autograd的关系,揭示梯度计算原理。最后提供进阶技巧和成长路径,帮助开发者从新手到专家逐步掌握张量操作,为模型开发扫清底层障碍。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 644

详解Tensor用法

Tensor的操作 张量的数据属性与 NumPy 数组类似,如下所示: 张量的操作主要包括张量的结构操作和张量的数学运算操作。 Tensor的结构操作包括:创建张量,查看属性,修改形状,指定设备,数据转换, 索引切片,广播机制,元素操作,归并操作; Tensor的数学运算包括:标量运算,向量运算,矩阵操作,比较操作。 未完待续。。。 ...

weixin_43485035的博客 9410

Pytorch深度学习实战3-3:张量Tensor的分块、变形、排序、极值与in-place操作

总结Pytorch中的张量Tensor分块、组合、变形(维度变换、维度交换、序列化与反序列化、扩展)、排序、极值、in-place操作的基本API方法

FRIGIDWINTER的博客 4577

pytorch张量创建与操作

张量创建 1. 直接创建 1.1 torch.tensor() 1.2 torch.from_numpy(ndarray) #从numpy创建tensor, 与原ndarray共享内存 2. 通过数值创建 2.1 torch.zeros() torch.zeros_like() torch.ones() torch.ones_like() torch.full() torch.full_like() 2.2 等差数列 torch.arange() #左闭右开,设置数列步长 torch.range() #左右为闭 torch.linspace() # 设置数列长度 2.3 torch.ey

PyTorch中张量的创建和常用方法

PyTorch中张量的创建及一些常用方法

qq_44289607的博客 3197

如何运用好DeepSeek为自己服务:智能增强的范式革命 || 目录

1.1 认知增强的三次浪潮1.2 DeepSeek认知增强模型1.3 人机认知耦合协议1.4 认知增强的数学基础。

𝓓𝓸𝓶𝓲𝓷𝓪𝓽𝓲𝓷𝓰 𝓐𝓵𝓵 𝓣𝓱𝓲𝓷𝓰𝓼 1218

pytorch之tensor操作

pytorch作为深度学习最成功的开源框架之一,tensor(张量)是其最基本的数据结构,熟悉各种tensor的生成变换操作是继续学习pytorch的基础。 1.创建tensor torch.eye(n ,m=None, out=None),返回一个2张量,对角线为1,其它全0。 torch.from_numpy(naddary),将numpy.ndarray转换成Tensor,注意,转换后生成的Tensor跟原ndarray共享一块内存空间。 torch.linespace(start, end, st

weixin_44819348的博客 1258

kaggle注册以及数据集下载全流程

kaggle注册,数据集下载及常见问题

Arriteey的博客 2万+

从零实现机械臂抓取仿真:用MoveIt+Gazebo完成物体pick&place全流程

本文详细介绍了如何使用ROS的MoveIt框架与Gazebo仿真环境,从零构建机械臂抓取仿真系统。涵盖环境搭建、MoveIt配置、Gazebo集成、抓取动作实现等全流程,帮助开发者掌握机械臂控制的核心技术,实现高效的pick&place任务。

weixin_29250403的博客 475

PyTorch 常用方法总结4:张量维度操作(拼接、维度扩展、压缩、转置、重复……)

涉及的方法有下面几种 torch.cat() torch.Tensor.expand() torch.squeeze() torch.Tensor.repeat() torch.Tensor.narrow() torch.Tensor.view() torch.Tensor.resize_() torch.Tensor.permute() 拼接张量 torch.cat(seq, dim=0...

TH_NUM的博客 5万+

使用TinyProxy搭建代理服务器

背景 办公电脑所在网络无法连接外网,机房服务器可以连接外网,通过服务器代理上网; 一、CentOS下TinyProxy安装–搭建代理服务器 TinyProxy是个轻量级简单的HTTP/HTTPS代理程序,GitHub和官网,安装方式这里主要介绍两种 CentOS下yum安装,参考:TinyProxy安装 Docker安装 先安装docker环境yum install docker -y 二、Win10下使用 ...

椰汁菠萝 1万+

pytorch张量维度操作(拼接、维度扩展、压缩、转置、重复……)

张量的操作确实有技巧,pytorch中提供了一些相关的操作,在编程的时候很有用。 涉及的方法见下面的目录: 目录一、拼接张量1、torch.cat()2、torch.stack()二、扩大张量1、torch.Tensor.expand()三、压缩张量1、torch.squeeze()四、重复张量1、torch.Tensor.repeat()2、torch.Tensor.unfold()五、缩小张量1、torch.Tensor.narrow()六、张量变形 z1、torch.Tensor.view()七、.

Ma Sizhou 2万+

SimMechanics二连杆仿真避坑指南:Solid模块坐标系设置与Rigid Transform常见错误

本文详细解析了SimMechanics中二连杆平面臂仿真的常见问题,重点探讨Solid模块坐标系设置与Rigid Transform模块的配置陷阱。通过实战案例和MATLAB代码示例,揭示多体系统仿真中的关键错误点,包括坐标系方向定义、参数匹配、端口连接规则等,帮助工程师有效规避仿真风险,提升建模效率。

weixin_29309213的博客 411

如何调试10G/25G以太网IP自协商/Link Training

如果是40G/50G, 100G以太网,选的是多通道的IP,务必保证两端的通道0是正确对接上的,因为在做自协商的时候,以太网只使用通道0,其它通道需在自协商完成后再加入工作。b. 自协商的工作完全由IP自动完成的,所以只要配置没问题,你只需要耐心等待就可以看到自协商的完成,以an_good_check为标志,并且进入下一步linktraining。c. 在LT的过程中,首先你要等到IP能够锁定LT帧,即frame_lock拉高,然后你就可以进行你自己的LT算法了,与AN不同LT是由客户手动完成的。

qq_43416206的博客 1507

pytorch中对tensor操作:分片、索引、压缩、扩充、交换维度、拼接、切割、变形

pytorch中对tensor的分片、索引操作根据维度提取子集 根据维度提取子集 原始数据情况 import torch a = torch.tensor([[1,2,3,4],[5,6,7,8],[9,10,11,12]], dtype=float) print(a) #原始数据情况 #下面#开头的是输出 #tensor([[ 1., 2., 3., 4.], # [ 5., 6., 7., 8.], # [ 9., 10., 11., 12.]], dtype

HailinPan的博客 1万+

【Docker】一招解决超时镜像超时报错:`ERROR: Get https://registry-1.docker.io/v2/`

Docker 镜像拉取超时或失败并不是 Docker 本身的缺陷,而是网络环境和默认配置在特定场景下的限制所导致的结果。通过本文的分析可以看到,问题的核心往往集中在三个方面:网络访问延迟、DNS 解析速度以及客户端默认超时时间。针对这些问题,最直接、有效的做法是使用国内镜像加速器,这不仅能够显著提升拉取速度,还能保证在企业内网或家庭网络中更加稳定

博客 1027

PyTorch张量维度操作(拼接、扩展、压缩、重复、变形、置换维度)

涉及到的方法有: 拼接torch.cat() 扩展torch.Tensor.expand() 压缩torch.squeeze(); torch.Tensor.narrow() 重复torch.Tensor.repeat(); torch.Tensor.unfold() 变形torch.Tensor.view();torch.Tensor.resize_() 置换维度torch.Tensor.per...

Huiyu Blog 1万+

机器翻译:一文掌握离线翻译库 Argos Translate 的详细使用

Argos Translate是一个开源的离线翻译库,支持多语言互译。它通过独立的翻译包(.argosmodel文件)实现翻译功能,每个包对应特定语言对的翻译任务。安装简单,只需pip安装argostranslate库,并通过命令行或Python API管理翻译包。支持批量处理和长期运行优化性能。对于不支持的语种,可采用桥接翻译或自行训练模型。该库提供CLI工具和Python API,适合集成到各种应用中,还可用于批量文件翻译。主要局限包括缺乏上下文理解、专业领域翻译不精准等。

数据知道的博客 3521

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

[PyTroch系列-16]:PyTorch基础 - 张量的操作 - 变形

作者主页(文火冰糖的硅基工坊):https://blog.youkuaiyun.com/HiWangWenBing 本文网址: 目录 第1章 Tensor运算与操作概述 1.1 概述 1.3 张量的操作与变换 1.4环境准备 1.5张量的操作 - 变形(reshape) 第2章 基本变形:reshape 1. 原理 2. 函数解读 3. 代码示例 第3章 2维矩阵的行列置换:t 1. 原理 2. 函数解读 3. 代码示例 第4章 任意维度方向上的置换:transpose 1. 原理..

文火冰糖(王文兵)的博客 1万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

用pytorch创建tensor,tensor的操作

print(f"按指定长度分割结果: {torch.split(x, split_size_or_sections=[1, 2], dim=0)}")print(f"dim=0 拼接结果:\n{torch.stack(tensors=[t1, t2], dim=0)}")print(f"dim=2 拼接结果:\n{torch.stack(tensors=[t1, t2], dim=2)}")print(f"转置后张量是否连续: {t1.is_contiguous()}")

2302_77466515的博客 2018

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

pytorch 2 张量操作

创建方式描述是否自动计算梯度创建一个包含数据的张量,默认不启用梯度计算。否(除非设置创建一个全0的张量,默认不启用梯度计算。否(除非设置创建一个全1的张量,默认不启用梯度计算。否(除非设置创建一个张量,并用指定值填充,默认不启用梯度计算。否(除非设置创建一个包含从start到end的序列的张量,默认不启用梯度计算。否(除非设置创建一个包含线性间隔的序列的张量,默认不启用梯度计算。否(除非设置创建一个包含均匀分布随机数的张量,默认不启用梯度计算。否(除非设置。

Jerry的博客 2302

Pytorch张量维度操作

目录张量维度扩充torch.cat(seq,dim=0,out=None)torch.Tensor.expand(*sizes)张量压缩(删除是1的维度)torch.squeeze(input, dim=None, out=None)重复张量torch.Tensor.repeat(*sizes)缩小张量torch.Tensor.narrow(dimension, start, length)张量变形torch.Tensor.view(*args)重设张量尺寸torch.Tensor.resize_(*siz

CVsaber的成长记录 5017

Pytorch常用张量变换操作

PyTorch中Tensor的维度变换 对于 PyTorch 的基本数据对象 Tensor (张量),在处理问题时,需要经常改变数据的维度,以便于后期的计算和进一步处理,本文旨在列举一些维度变换的方法并举例,方便大家查看。 维度查看:torch.Tensor.size() 查看当前 tensor 的维度 举个例子: >>> import torch >>> a = torch.Tensor([[[1, 2], [3, 4], [5, 6]]]) >>>

helloworld_Fly的博客 2966
上一篇: 机器学习从零开始系列【第五话】过拟合与正则化
下一篇: Pytorch 梯度优化问题【Pytorch 基础第二话】
JintuZheng
博客等级 码龄11年 1483粉丝 109原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值