【PyTorch】PyTorch中张量(Tensor)切片操作

PyTorch深度学习总结

第三章 PyTorch中张量(Tensor)切片操作


文章目录


一、前言

上文介绍了PyTorch中改变张量(Tensor)形状的操作,本文主要介绍张量切片操作。


二、获取张量中的元素

1、切片(行、列数)方法

python 复制代码
# 引入库
import torch

# 生成张量
A = torch.arange(9).reshape(3, 3)
print(A)

生成张量A:

tensor(

[[0, 1, 2],

[3, 4, 5],

[6, 7, 8]])


现截取A[0]:

python 复制代码
print(A[0]) # 截取最外围括号内第一个括号的内容,第一个维度第一行的内容

结果为:

tensor([0, 1, 2])

python 复制代码
# 引入库
import torch

# 生成张量
B = torch.arange(9).reshape(1, 3, 3)
print(B)

生成张量B:

tensor(

[[[0, 1, 2],

[3, 4, 5],

[6, 7, 8]]])


现截取B[0]:

python 复制代码
print(B[0]) # 截取最外围括号内第括号的内容,第一个维度第一行的内容

结果为:

tensor(

[[0, 1, 2],

[3, 4, 5],

[6, 7, 8]])
③根据上文张量B进行截取

python 复制代码
print(B[0, 1:2, 1:2])

结果为:

tensor([[4]])
注意此时[1:2]指第2个元素开头到第三个元素为至,且不包含第三个元素。(属于包含左边不包含右边,先行后列)


python 复制代码
print(B[0, 1:3, 1:2])

结果为:

tensor([[4], [7]])


python 复制代码
print(B[0, -1, -2])

结果为:

tensor(7)


python 复制代码
print(B[0, -3:-1, -2]) # 第一个维度,倒数第三行到倒数二行,倒数第二列的元素

结果为:

tensor([1, 4])
④通过比较关系输出元素

python 复制代码
print(B[B>=3])

结果为:

tensor([3, 4, 5, 6, 7, 8])
注意此处为获取元素组成1维张量

2、torch.where()函数

python 复制代码
C = -B
D = torch.where(B>4, B, C)
print(D)

输出结果为:

tensor(

[[[ 0, -1, -2],

[-3, -4, 5],

[ 6, 7, 8]]])

3、使元素置零的操作

函数 描述
torch.tril(A, diagonal=0) 将A以第一个元素为对角线的直线,将上三角置零
torch.triu(A, diagonal=0) 将A以第一个元素为对角线的直线,将下三角置零
torch.diag(A) 保留对角线,将其他元素全部置零,输入必须是二维张量

示例:

torch.tril():

python 复制代码
E1 = torch.tril(B, diagonal=0)
print(E1)

输出结果为:

tensor(

[[[0, 0, 0],

[3, 4, 0],

[6, 7, 8]]])


python 复制代码
E2 = torch.tril(B, diagonal=1)
print(E2)

输出结果为:

tensor(

[[[0, 1, 0],

[3, 4, 5],

[6, 7, 8]]])
torch.triu():

python 复制代码
F = torch.triu(B, diagonal=0)
print(F)

输出结果为:

tensor(

[[[0, 1, 2],

[0, 4, 5],

[0, 0, 8]]])
torch.diag():

python 复制代码
H = torch.diag(A)
print(H)

输出结果为:

tensor([0, 4, 8])


相关推荐
学步_技术几秒前
自动驾驶系列—线控系统:驱动自动驾驶的核心技术解读与应用指南
人工智能·机器学习·自动驾驶·线控系统·转向系统
jmoych9 分钟前
AI正悄然地影响着企业数字化转型
人工智能
蜡笔小新星11 分钟前
Python Kivy库学习路线
开发语言·网络·经验分享·python·学习
说私域12 分钟前
社群团购中的用户黏性价值:以开源小程序多商户AI智能名片商城源码为例
人工智能·小程序
篝火悟者26 分钟前
问题-python-运行报错-SyntaxError: Non-UTF-8 code starting with ‘\xd5‘ in file 汉字编码问题
开发语言·python
hakesashou1 小时前
python如何比较字符串
linux·开发语言·python
深度学习实战训练营1 小时前
基于keras的停车场车位识别
人工智能·深度学习·keras
乔代码嘚1 小时前
AI2.0时代,普通小白如何通过AI月入30万
人工智能·stable diffusion·aigc
墨@#≯1 小时前
机器学习系列篇章0 --- 人工智能&机器学习相关概念梳理
人工智能·经验分享·机器学习
Elastic 中国社区官方博客1 小时前
Elasticsearch:使用 LLM 实现传统搜索自动化
大数据·人工智能·elasticsearch·搜索引擎·ai·自动化·全文检索