Tensorflow:索引和切片

通过索引与切片操作可以提取张量的部分数据,使用频率非常高

一、索引

TensorFlow 中,支持基本的[𝑖][𝑗] …标准索引方式,也支持通过逗号分隔索引号的索
引方式。
考虑输入X 为4 张32x32 大小的彩色图片(为了方便演示,大部分张量都使用随
即分布模拟产生,后文同),shape 为[4,32,32,3],首先创建张量:

x = tf.random.normal([4,32,32,3])
#取第 1 张图片的数据:
x[0]
# 取第1张图片的第2行
x[0][1]
# 取第1张图片,第2行,第3列的像素
x[0][1][2]
# 取第 3 张图片,第2 行,第1 列的像素,B 通道(第2 个通道)颜色强度值
x[2][1][0][1]

当张量的维度数较高时,使用[𝑖][𝑗]. . . [𝑘]的方式书写不方便,可以采用[𝑖, 𝑗, … , 𝑘]的方
式索引,它们是等价的。

取第 2 张图片,第10 行,第3 列:

x[1,9,2]

二、切片

通过𝑠𝑡𝑎𝑟𝑡: 𝑒𝑛𝑑: 𝑠𝑡𝑒𝑝切片方式可以方便地提取一段数据,其中start 为开始读取位置的
索引,end 为结束读取位置的索引(不包含end 位),step 为读取步长。

start: end: step切片方式有很多简写方式,其中start、end、step 3 个参数可以根据需要
选择性地省略,全部省略时即::,表示从最开始读取到最末尾,步长为1,即不跳过任何元
素。
如x[0,::]表示读取第1 张图片的所有行,其中::表示在行维度上读取所有行,它等于
x[0]的写法
在这里插入图片描述
特别地,step 可以为负数,考虑最特殊的一种例子,step = −1时,start: end: −1表示
从start 开始,逆序读取至end 结束(不包含end),索引号𝑒𝑛𝑑 ≤ 𝑠𝑡𝑎𝑟𝑡

为了避免出现像𝑥[: , : , : ,1]这样出现过多冒号的情况,可以使用⋯符号表示取多个维度
上所有的数据,其中维度的数量需根据规则自动推断:当切片方式出现⋯符号时,⋯符号
左边的维度将自动对齐到最左边,⋯符号右边的维度将自动对齐到最右边,此时系统再自
动推断⋯符号代表的维度数量,
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南淮北安

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值