Tensorflow2.0四维张量的索引和切片问题

TensorFlow深度学习(2) 2、TensorFlow基础 TensorFlow 是一个面向深度学习算法的科学计算库,内部数据保存在张量(Tensor)对象上,所有的运算操作(Operation,简称 OP)也都是基于张量对象进行的。 2.1数据类型 首先来介绍 TensorFlow 中的基本数据类型,包含数值类型、字符串类型和布尔类型。 2.1.1数值类型 标量(Scalar)。单个的实数,如 1.2, 3.4 等,维度(Dimension)数为 0,shape 为[]。 向量(Vector)。????个实数的有序集合,通过中括号包裹 阅读详情

索引

在 TensorFlow 中,支持基本的[𝑖][𝑗] …标准索引方式,也支持通过逗号分隔索引号的索引方式。考虑输入X 为4 张32x32 大小的彩色图片,shape 为[4,32,32,3],首先创建张量:
x = tf.random.normal([4,32,32,3])
接下来我们使用索引方式读取张量的部分数据。

❑ 取第 1 张图片的数据:

In [51]: x[0]
Out[51]:<tf.Tensor: id=379, shape=(32, 32, 3), dtype=float32, numpy=
array([[[ 1.3005302 , 1.5301839 , -0.32005513],
[-1.3020388 , 1.7837263 , -1.0747638 ], ...
[-1.1092019 , -1.045254 , -0.4980363 ],
[-0.9099222 , 0.3947732 , -0.10433522]]], dtype=float32)>

❑ 取第 1 张图片的第2 行:

In [52]: x[0][1]
Out[52]:
<tf.Tensor: id=388, shape=(32, 3), dtype=float32, numpy=
array([[ 4.2904025e-01, 1.0574218e+00, 3.1540772e-01],
[ 1.5800388e+00, -8.1637271e-02, 6.3147342e-01], ...,
[ 2.8893018e-01, 5.8003378e-01, -1.1444757e+00],
[ 9.6100050e-01, -1.0985689e+00, 1.0827581e+00]], dtype=float32)>

❑ 取第 1 张图片,第2 行,第3 列的像素:

In [53]: x[0][1][2]
Out[53]:
<tf.Tensor: id=401, shape=(3,), dtype=float32, numpy=array([-0.55954427,
0.14497331, 0.46424514], dtype=float32)>

❑ 取第 3 张图片,第2 行,第1 列的像素,B 通道(第2 个通道)颜色强度值:

In [54]: x[2][1][0][1]
Out[54]:
<tf.Tensor: id=418, shape=(), dtype=float32, numpy=-0.84922135>

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

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

In [55]: x[1,9,2]
Out[55]:
4.6 索引与切片[在此处键入] 17
<tf.Tensor: id=436, shape=(3,), dtype=float32, numpy=array([ 1.7487534 , -
0.41491988, -0.2944692 ], dtype=float32)>

切片

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

❑ 读取第 2,3 张图片:

In [56]: x[1:3]
Out[56]:
<tf.Tensor: id=441, shape=(2, 32, 32, 3), dtype=float32, numpy=
array([[[[ 0.6920027 , 0.18658352, 0.0568333 ],
[ 0.31422952, 0.75933754, 0.26853144],
[ 2.7898 , -0.4284912 , -0.26247284],...

start: end: step切片方式有很多简写方式,其中start、end、step 3 个参数可以根据需要选择性地省略,全部省略时即::,表示从最开始读取到最末尾,步长为1,即不跳过任何元
素。如x[0,::]表示读取第1 张图片的所有行,其中::表示在行维度上读取所有行,它等于
x[0]的写法:

In [57]: x[0,::]
Out[57]:
<tf.Tensor: id=446, shape=(32, 32, 3), dtype=float32, numpy=
array([[[ 1.3005302 , 1.5301839 , -0.32005513],
[-1.3020388 , 1.7837263 , -1.0747638 ],
[-1.1230233 , -0.35004002, 0.01514002],
...

为了更加简洁,::可以简写为单个冒号:,如

In [58]: x[:,0:28:2,0:28:2,:]
Out[58]:
<tf.Tensor: id=451, shape=(4, 14, 14, 3), dtype=float32, numpy=
array([[[[ 1.3005302 , 1.5301839 , -0.32005513],
[-1.1230233 , -0.35004002, 0.01514002],
[ 1.3474811 , 0.639334 , -1.0826371 ],
...

表示取所有图片,隔行采样,隔列采样,所有通道信息,相当于在图片的高宽各缩放至原来的50%。

我们来总结start: end: step切片的简写方式,其中从第一个元素读取时start 可以省略,
即start=0 是可以省略,取到最后一个元素时end 可以省略,步长为1 时step 可以省略

切片的方式意义
start: end:step从 start 开始读取到end(不包含end),步长为step
start: end从 start 开始读取到end(不包含end),步长为1
start:从 start 开始读取完后续所有元素,步长为1
start::step从 start 开始读取完后续所有元素,步长为step
: end:step从 0 开始读取到end(不包含end),步长为step
:end从 0 开始读取到end(不包含end),步长为1
::step每隔 step-1 个元素采样所有
::读取所有元素
:读取所有元素

特别地,step 可以为负数,考虑最特殊的一种例子,step = −1时,start: end: −1表示从start 开始,逆序读取至end 结束(不包含end),索引号𝑒𝑛𝑑 ≤ 𝑠𝑡𝑎𝑟𝑡。考虑一0~9 简单序列,逆序取到第1 号元素,不包含第1 号:

In [59]: x = tf.range(9)
x[8:0:-1]
Out[59]:
<tf.Tensor: id=466, shape=(8,), dtype=int32, numpy=array([8, 7, 6, 5, 4, 3,
2, 1])>

逆序取全部元素:

In [60]: x[::-1]
Out[60]:
<tf.Tensor: id=471, shape=(9,), dtype=int32, numpy=array([8, 7, 6, 5, 4, 3,
2, 1, 0])>

逆序间隔采样:

In [61]: x[::-2]
Out[61]:
<tf.Tensor: id=476, shape=(5,), dtype=int32, numpy=array([8, 6, 4, 2, 0])>

读取每张图片的所有通道,其中行按着逆序隔行采样,列按着逆序隔行采样:

In [62]: x = tf.random.normal([4,32,32,3])
x[0,::-2,::-2]
Out[62]:
<tf.Tensor: id=487, shape=(16, 16, 3), dtype=float32, numpy=
array([[[ 0.63320625, 0.0655185 , 0.19056146],
[-1.0078577 , -0.61400175, 0.61183935],
[ 0.9230892 , -0.6860094 , -0.01580668],
…

当张量的维度数量较多时,不需要采样的维度一般用单冒号:表示采样所有元素,此时有可能出现大量的:出现。继续考虑[4,32,32,3]的图片张量,当需要读取G 通道上的数据时,前面所有维度全部提取,此时需要写为:

In [63]: x[:,:,:,1]
Out[63]:
<tf.Tensor: id=492, shape=(4, 32, 32), dtype=float32, numpy=
array([[[ 0.575703 , 0.11028383, -0.9950867 , ..., 0.38083118,
-0.11705163, -0.13746642],
...

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

切片的方式意义
a,⋯,ba 维度对齐到最左边,b 维度对齐到最右边,中间的维度全部读取,其他维度按a/b 的方式读取
a,⋯ a维度对齐到最左边,a 维度后的所有维度全部读取,a 维度按a 方式读取。这种情况等同于a 索引/切片方式
⋯,bb 维度对齐到最右边,b 之前的所有维度全部读取,b 维度按b 方式读取
⋯读取张量所有数据

考虑如下例子:

❑ 读取第 1-2 张图片的G/B 通道数据:

In [64]: x[0:2,...,1:]
Out[64]:
<tf.Tensor: id=497, shape=(2, 32, 32, 2), dtype=float32, numpy=
array([[[[ 0.575703 , 0.8872789 ],
[ 0.11028383, -0.27128693],
[-0.9950867 , -1.7737272 ],
...

❑ 读取最后2 张图片:

In [65]: x[2:,...]
Out[65]:
<tf.Tensor: id=502, shape=(2, 32, 32, 3), dtype=float32, numpy=
array([[[[-8.10753584e-01, 1.10984087e+00, 2.71821529e-01],
[-6.10031188e-01, -6.47952318e-01, -4.07003373e-01],
[ 4.62206364e-01, -1.03655539e-01, -1.18086267e+00],
...

❑ 读取 R/G 通道数据:

In [66]: x[...,:2]
Out[66]:
<tf.Tensor: id=507, shape=(4, 32, 32, 2), dtype=float32, numpy=
array([[[[-1.26881 , 0.575703 ],
[ 0.98697686, 0.11028383],
[-0.66420585, -0.9950867 ],
...

张量的索引与切片方式多种多样,尤其是切片操作,初学者容易犯迷糊。但其实本质上切片操作只有𝑠𝑡𝑎𝑟𝑡: 𝑒𝑛𝑑: 𝑠𝑡𝑒𝑝这一种基本形式,通过这种基本形式有目的地省略掉默认参数,从而衍生出多种简写方法,这也是很好理解的。它衍生的简写形式熟练后一看就能推测出省略掉的信息,书写起来也更方便快捷。由于深度学习一般处理的维度数在4 维以内,⋯操作符完全可以用:符号代替,因此理解了这些就会发现张量切片操作并不复杂。

MATLAB "slice"切片功能实现四维显示 利用MATLAB 7.0的"slice"切片功能将三维表示的数据,通过对图形的线型、立面、色彩、渲染、光线、视角等的控制,可形象表现数据四维特性。 立即下载

相关推荐

从零搭建ECG心电图仪:模拟前端电路设计与噪声对抗实战

在电子工程和生物医学信号处理领域,微弱信号的采集与放大是核心挑战。其基本原理在于利用高精度模拟电路,从强大的环境噪声中提取出有用的差分信号。这项技术的核心价值在于将理论上的传感器信号转化为稳定、可靠的可用数据,是连接物理世界与数字系统的关键桥梁。在医疗监护、工业传感和科学测量等场景中,高性能的模拟前端设计直接决定了整个系统的精度与可靠性。本文聚焦于生物电信号采集这一具体应用,深入探讨如何运用差分放大器、低通滤波器和陷波滤波器等经典模块,构建一个能够有效对抗工频干扰和接触噪声的实用电路,最终实现从人体体表清晰

weixin_30616969的博客 460

tensorflow之4维张量一般含义

[batch_size,height,width, channels] [height,width,input_channels, output_channels]

Jason的博客 4883

同济土木非0基础三个月跨考复旦计算机攻略

跨考cs攻略前言我cs专业课如何复习How to start from zero简历其他复试 前言 建议多去工地/化工厂涡轮增压一下 我 同济土木gpa 3.2/5 挂科 * n 辣鸡项目 * n (padding 简历) 21考复旦计算机专硕 10月-12月 学习+复习 总分392 政治 68;背肖4即可 英语二 78 裸考,(高考英语140+);做点真题,建议据自己情况准备 数学二 142 ;(高考数学接近满分);做真题+模拟题,每天写一张试卷 专业课 104 ,考试生病了,下文展开。 cs专业课

piglake的博客 7238

tensorflow四维tensor的形状以及函数tf.argmax( )的笔记

关于tensorflow里多维数组(主要是四维)的组织形式之前一直没弄懂,最近遇到相关问题,算是搞清楚了一些东西,特别记下来,免得自己又遗忘了。 三维形式能很简单的脑补出来三维的形状,不再赘述。 之前一直纠结四维的时候数据是怎样填充的。特别是遇到深度学习的时候输入都是[batch,height,width,channel],这种四维的张量的时候,是怎样个数据的形状。 先看代码: ...

dilehong8007的博客 618

ESP32-CAM图像糊成马赛克?OV2640参数调优保姆级教程(亮度/对比度/饱和度)

本文提供了一份详细的ESP32-CAM图像调优教程,针对OV2640摄像头常见的图像模糊问题,从分辨率设置、亮度/对比度/饱和度调整到高级寄存器配置,帮助用户优化网页显示画质。通过代码示例和实用技巧,解决马赛克、色彩暗淡等问题,提升摄像头性能。

weixin_30410119的博客 596

无人机频谱侦测与智能识别技术实战解析

本文深入解析无人机频谱侦测与智能识别技术实战应用,涵盖无线电侦测、信号处理和定位技术等核心内容。通过频谱分析、特征提取和机器学习算法优化,实现高精度无人机识别与定位,并分享复杂环境下的应对策略和系统集成经验。

weixin_28419039的博客 489

python多维数组切片

import numpy as np if __name__ == '__main__': b = np.array( [[[1,2,3], [4,5,6], [7,8,9]], [[11,12,13], [14,15,16], ...

qq_28565767的博客 466

Cosmos Transfer2.5多模态AI模型部署与优化实战

多模态AI技术通过融合文本、图像、代码等不同模态数据,实现跨模态理解与生成。其核心原理基于Transformer架构的注意力机制,结合对比学习实现模态对齐。这类技术在智能内容创作、跨模态搜索等领域具有重要价值,尤其适合电商营销图文生成、UI设计转代码等场景。Cosmos Transfer2.5作为先进的多模态模型,支持8192 tokens长文本窗口和混合模态输入,实测推理速度达17.5 samples/s(T4显卡)。部署时需注意FlashAttention优化可提升3倍长文本处理效率,8-bit量化则能

weixin_29038303的博客 281

坑记--四维矩阵切片实验

这是数组: >>> data >>>array([[[[ -3.3042624 , -34.29845047, -92.78063965], [-19.51710592, -70.68330269, -90.28064089]], [[ -3.3042624 , -34.29845047, -92.78063965], [ 12.31963874, -70.68330269, -87.78064089]]],

伪民科小白随意折腾随心记 414

vs code , 配置 claude code 插件, 默认选项 : --dangerously-skip-permission

摘要:本文介绍如何在VS Code中为Claude Code插件配置--dangerously-skip-permission参数,包含两种方法:图形界面设置(适合新手)和直接编辑settings.json(精准配置)。该参数会跳过权限检查,仅建议在本地测试环境中使用。配置后需通过命令面板验证参数是否生效,并注意安全风险,避免在生产环境使用。多参数配置时需用数组格式,不同版本插件可能键名略有差异。

AI天才研究院 5002

几种负载均衡策略(DNS、NAT、重定向、反向代理)

摘要:本文对比了四种负载均衡技术:DNS负载均衡通过域名解析分发IP,用户直连服务器;NAT负载均衡通过VIP转发流量,所有流量经过负载均衡器;HTTP重定向通过302跳转实现分流;反向代理则隐藏后端服务器,统一转发请求。DNS简单但调度不精准,NAT精准但有带宽瓶颈,HTTP重定向延迟高,反向代理性能好但需专用设备。适用场景各异,DNS适合异地分流,NAT适合内网集群,HTTP重定向适合简单分流,反向代理适合高并发场景。核心区别在于层级(3层/7层)和流量走向(直连/中转)。

echo的博客 73

TensorFlow2简单入门-四维张量

作者: 明天依旧可好 数据|代码:在微信公众号「明天依旧可好」中回复:03 四维张量在卷积神经网络(CNN)中广泛应用,一般用于保存特征图(Feature maps)数据,格式一般定义为 [b,h,w,c][b,h,w,c][b,h,w,c] 其中????表示输入样本的数量; ℎ表示特征图的高;w表示特征图的宽; ????表示特征图的通道数。 先来看一份代码 import tensorflow as tf from tensorflow.keras import datasets, layers, mode

“365天深度学习训练营”报名进行中~ 3715

Altium Designer (AD) 设计软件高频面试题及参考答案(3万字长文)

在Altium Designer(AD)中,设计复用是一种关键的策略,它允许设计师在多个项目中重复使用经过验证的设计元素,如原理图符号、PCB布局、元器件封装和设计规则集。在Altium Designer (AD) 中,手动布线和交互式布线是PCB设计中常见的两种布线模式,它们提供了设计师对布线路径的直接控制,特别是在处理复杂或关键信号路径时尤为有用。在Altium Designer (AD) 中进行电路级仿真是一项重要的设计验证步骤,它允许设计师在实际制造之前对电路的行为进行预测和分析。

大模型大数据攻城狮的专栏 4783

【深度学习_TensorFlow】索引与切片

可以理解成多维数组的下标索引,索引方法是 变量名[ 下标 ][ 下标 ]创建下面一个张量是什么意思?tf.ones( [ 3, 30, 30, 3 ] ) :它是一个四维的张量,形状为 (3, 30, 30, 3)。这个张量中的每个元素都是 1。具体来说,它是一个由 3 个 3x3x3 的矩阵组成的张量,每个矩阵中的每个元素都是 1。上述张量结合实际例子就可以理解为创建一个四维张量来储存图片信息,有3张照片,分别为30 * 30 的 3 通道彩色照片。

m0_73222051的博客 2099

jre9下载 jdk9

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

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Tensorflow2.0——2、索引与切片

Basic indexing ●●● In [4]: a=tf.ones([1,5,5,3] ) //定义一个dim=4的tensor In [5]: a[0][0] //取出2维向量,形状5行3列 <tf.Tensor: id=16, shape=(5, 3),dtype= float32, numpy= array([[1., 1., 1.], [1., 1., 1.], ...

lzw964684894的博客 430

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

4 部分采集--神经网络与深度学习——TensorFlow2.0实战

作者:Irain QQ:2573396010 微信:18802080892 目录1 索引和切片1.1 索引1.2 切片1.2.1 二维张量切片1.2.2 三维张量切片1.2.3 四维张量切片2 数据提取2.1 对应索引|值的元素采集2.2 对多维张量采样2.3 同时采样多个点2.4 选择采样维度 1 索引和切片 1.1 索引 手写数字图像数据集MNIST: (60000, 28, 28) mnist[0]:取第1 张图片中的数据 mnist[0][1] :取第1张图片中的第2行 mnist[0][1].

weixin_42122125的博客 1648

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Tensorflow2.0之4维张量

文章目录Tensorflow2.0之4维张量简介:格式定义对于4维张量的索引和切片问题 Tensorflow2.0之4维张量 简介: 4 维张量在卷积神经网络中应用的非常广泛,它用于保存特征图(Feature maps)数据, 格式定义 格式一般定义为: [b,h,w,c] [b,h,w,c] [b,h,w,c] 其中????表示输入的数量,h/w分布表示特征图的高宽,????表示特征图的通道数,部分深度学习...

python_LC_nohtyp的博客 4353

Tensorflow基础之张量操作索引与切片|维度变换|Broadcasting

通过start:end:step切片方式可以方便地提取一段数据,其中start为起始索引,end为结束读取位置索引(不包含end位),step为采样步长。tf.tile(x,multiples)函数完成在指定维度上复制,multiples分别指定了每个维度上的复制倍数,对应位置为1则不复制,对应位置为2则代表新长度要变为原来长度的二倍。特别地,step可以为负数,当为负数时,索引号end

m0_64578069的博客 930

PyTorch张量索引切片保姆级教程:从a[0]到a[..., 1:2]的避坑指南

本文详细解析PyTorch张量索引与切片操作,从基础的单维度索引到高阶的多维度切片技巧,涵盖常见错误与避坑指南。特别针对省略号(...)的使用场景和PyTorch与NumPy/TensorFlow的差异进行对比,帮助开发者高效处理深度学习项目中的张量操作。

weixin_33672400的博客 701

【TF2-01】tensorflow2基础

文章目录数据类型基本数据类型有通过TensorFlow的方式去创建张量tensor常见且有用的属性numpy转tensor 数据类型 几乎所有数据都可以叫张量(tensor),根据维度来区分,可以分为: 标量(Scalar)。单个的实数,如1.2, 3.4 等,维度(Dimension)数为0,shape 为[]。 向量(Vector)。n个实数的有序集合,通过中括号包裹,如[1.2],[1.2, 3.4]等,维度数为1,长度不定,shape 为[n]。 矩阵(Matrix)。n行m列实数的有序

不知道在干嘛每天 787

TensorFlow2.0学习笔记-----索引与切片

1. 索引 a = tf.ones([1,5,5,3]) 创建一个shape为[1,5,5,3]的全1张量,可以理解为一张图片,大小5x5,有三个通道 a[1,2]和a[1][2]是同一种索引方式的不同表达形式,都可以 a[1,2]输入numpy风格的索引 2.切片 :前后分别是start和end ;代表该维度的所有值都取 ...

希望和大家多多交流技术! 194

TensorFlow基础

b. 在tensorflow2.0环境中运行tensorflow1.0的代码,常常会出现错误c. Tensorflow张量(Tensor) cpu 高速运行在gpu和 tpu上d. 创建Tensor对象。

weixin_52126591的博客 1077

TensorFlow基础知识(二)

摘要:本文是TensorFlow基础知识的第二部分。 1、张量的典型应用 1.1 标量 一般用来进行误差值的表示、各种测量指标的表示,例如:准确率、精度、召回率等。下面举例: 1.2 向量 在神经网络当中,向量更是十分的常见,例如神经元的偏置值b一般就要用向量来表示,这里的向量就是【b1,b2】T 例如我们现在要创建一个输入为5个结点,输出层为4个结点的线性网络层,那么此时创建的网络...

lzy820260594的博客 328

每天学一点tensorflow——tf.argmax(x, axis = 0)和tf.reduce_max(x, axis = 0)

day1:tf.argmax(x, axis = 0)和tf.reduce_max(x, axis = 0) 今天学习的这两个函数可以考虑为一大类函数,比如reduce_sum()计算张量的和,reduce_mean()计算张量的平均值,reduce_max()和reduce_min()计算张量的最大值和最小值,以及argmax()和argmin()计算张量最大和最小值的位置索引,会使用这两个函...

qq_29444571的博客 4235

从安装到部署:mlx-community/BTL-4-OptiQ-4bit本地运行完整指南(含OpenAI兼容接口)

mlx-community/BTL-4-OptiQ-4bit是一款基于OptiQ混合精度量化技术的本地运行大语言模型,专为Apple Silicon设备优化,可实现高效的工具调用、软件工程和长周期代理任务处理。本指南将帮助您从安装到部署,轻松在本地搭建这一强大的AI模型服务。 ## 什么是mlx-community/BTL-4-OptiQ-4bit? mlx-community/BTL-4-O

gitblog_00175的博客 842
上一篇: Tensorflow2.0中的不同行但同列的矩阵加法
下一篇: C语言-使用指针拼接两个字符串数组
AndSonder
博客等级 码龄7年 364粉丝 154原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值