【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])


相关推荐
小菜日记^_^2 分钟前
BEAGLE: Forensics of Deep Learning Backdoor Attack for Better Defense(论文阅读)
论文阅读·人工智能·深度学习·sp·ai安全·backdoor 后门攻击·安全四大
小毕超15 分钟前
基于 PyTorch 从零手搓一个GPT Transformer 对话大模型
pytorch·gpt·transformer
denghai邓海22 分钟前
红黑树删除之向上调整
python·b+树
千天夜42 分钟前
激活函数解析:神经网络背后的“驱动力”
人工智能·深度学习·神经网络
大数据面试宝典43 分钟前
用AI来写SQL:让ChatGPT成为你的数据库助手
数据库·人工智能·chatgpt
封步宇AIGC1 小时前
量化交易系统开发-实时行情自动化交易-3.4.1.2.A股交易数据
人工智能·python·机器学习·数据挖掘
何曾参静谧1 小时前
「Py」Python基础篇 之 Python都可以做哪些自动化?
开发语言·python·自动化
m0_523674211 小时前
技术前沿:从强化学习到Prompt Engineering,业务流程管理的创新之路
人工智能·深度学习·目标检测·机器学习·语言模型·自然语言处理·数据挖掘
Prejudices1 小时前
C++如何调用Python脚本
开发语言·c++·python
HappyAcmen1 小时前
IDEA部署AI代写插件
java·人工智能·intellij-idea