索引与切片在Tensorflow中使用的频率极其高,可以用来提取部分数据。
1.索引
在 TensorFlow 中,支持基本的["htmlcode">
# 创建张量 x = tf.random.normal([4, 32, 32, 3]) # 提取出第一张图片 x[0] <tf.Tensor: id=253, shape=(32, 32, 3), dtype=float32, numpy= array([[[ 3.16146165e-01, 1.88969020e-02, 1.38413876e-01], [ 4.89341050e-01, 2.75277281e+00, 7.39786148e-01], [-1.25965345e+00, -2.69633114e-01, -1.16465724e+00], ..., # 提取出第一张图片的第二行 x[0][1] <tf.Tensor: id=261, shape=(32, 3), dtype=float32, numpy= array([[ 7.4337220e-01, -1.0524833e+00, -2.6401659e-03], [ 5.3725803e-01, -9.5556659e-01, 4.9091709e-01], [-4.6934509e-01, 7.9289172e-03, -2.9179385e+00], [ 2.9324377e-01, 2.1451252e+00, -3.8849866e-01], [ 8.2027388e-01, -4.9701610e-01, -7.3374517e-02], ...... # 提取出第一张图片的第二行第三列的像素 x[0][1][2] <tf.Tensor: id=273, shape=(3,), dtype=float32, numpy=array([-0.4693451 , 0.00792892, -2.9179385 ], dtype=float32)> # 提取出第一张图片第二行第三列第二个用到(B通道)的颜色强度 x[0][1][2][2] <tf.Tensor: id=289, shape=(), dtype=float32, numpy=-2.9179385>
当张量的维度数较高时,使用["htmlcode">
x[1, 9, 2] == x[1][9][2] <tf.Tensor: id=306, shape=(3,), dtype=bool, numpy=array([ True, True, True])>
2.切片
通过"htmlcode">
# 创建张量 x = tf.random.normal([4, 32, 32, 3]) # 读取第二张和第三张图片 x[1:3] <tf.Tensor: id=344, shape=(2, 32, 32, 3), dtype=float32, numpy= array([[[[-3.4415385e-01, 5.8418065e-01, 1.8238322e-01], [ 5.3377771e-01, 5.8201426e-01, 1.2839563e+00], [-1.4592046e+00, -2.3443605e-01, -2.6524603e-01], ..., [-5.0662726e-01, 6.9743747e-01, -5.8803167e-02], [ 1.4200432e+00, -5.0182146e-01, 5.1661726e-02], [ 3.5610806e-02, -2.4781477e-01, 1.8222639e-01]], [[ 1.3892423e+00, 1.1985755e+00, -6.4732605e-01], [ 8.5562867e-01, 1.2758574e+00, 1.7331127e+00], [ 9.7743452e-02, -5.3990984e-01, 8.3400911e-01], ...,
start: end: step切片方式有很多简写方式,其中 start、end、step 3 个参数可以根据需要选择性地省略,全部省略时即::,表示从最开始读取到最末尾,步长为 1,即不跳过任何元素。如 x[0,::]表示读取第 1 张图片的所有行,其中::表示在行维度上读取所有行,它等于x[0]的写法。
即x[0, ::]等价于x[0 ]。
为了更加简洁,::可以简写成为单个冒号。
x[:, 0:28:2, 0:28:2, :] <tf.Tensor: id=344, shape=(2, 32, 32, 3), dtype=float32, numpy= array([[[[-3.4415385e-01, 5.8418065e-01, 1.8238322e-01], [ 5.3377771e-01, 5.8201426e-01, 1.2839563e+00], [-1.4592046e+00, -2.3443605e-01, -2.6524603e-01], ...,
上述表示取所有图片,隔行采样,隔列采样,采集所有通道信息。相当于在图片的高宽各放缩至原来的一半。
下面是一些常见的切片方式小结:
特别地,step可以为负数。例如:step = "htmlcode">
x = tf.range(9) # 逆序输出 x[8:0:-1] <tf.Tensor: id=31, shape=(8,), dtype=int32, numpy=array([8, 7, 6, 5, 4, 3, 2, 1])> # 逆序取全部元素 x[::-1] <tf.Tensor: id=35, shape=(9,), dtype=int32, numpy=array([8, 7, 6, 5, 4, 3, 2, 1, 0])> # 逆序间隔采样 x[::-2] <tf.Tensor: id=39, shape=(5,), dtype=int32, numpy=array([8, 6, 4, 2, 0])>
当张量的维度数量较多时,不需要采样的维度一般用单冒号:表示采样所有元素。
x = tf.random.normal([4, 32, 32, 3]) # 提取所有图片的G通道 x[:,:,:,1] <tf.Tensor: id=59, shape=(4, 32, 32), dtype=float32, numpy= array([[[ 0.5700944 , 0.58056635, 2.2198782 , ..., -0.8475847 , 0.49761978, 0.28784937], [-0.22224228, 0.77950406, -0.01802959, ..., 0.55532527, 0.6826188 , 0.50668514], [-2.4160695 , -0.96219736, 0.62681717, ..., 1.0348777 ,
# 创建四张大小为32*32的彩色图片 x = tf.random.normal([4, 32, 32, 3]) # 读取第一张和第二张图片的G/B通道数据 x[0:2,...,1:] # 读取最后两张图片 x[2,...] # 读取所有图片的R/G通道 x[...,:2]
掌握了张量的索引与切片之后,会让我们的书写更加快捷。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
白云城资源网 Copyright www.dyhadc.com
暂无“TensorFlow索引与切片的实现方法”评论...
更新日志
2024年11月13日
2024年11月13日
- 群星《电台情歌-凌晨时分》2CD[低速原抓WAV]
- 许巍《试音天碟》人声测试天碟[WAV分轨][1G]
- 蔡琴《你不要那样看着我的眼睛》SACD版[低速原抓WAV+CUE][1G]
- 费玉清《一剪梅》24K金碟德国版[低速原抓WAV+CUE][1G]
- 宝可梦大集结国服什么时候上线 大集结国服上线时间一览
- 宝可梦大集结国服官网地址是什么 大集结官方网址一览
- 宝可梦大集结开服5选1礼包怎么选 新手5选1宝可梦推荐
- 劳斯莱斯女车主丈夫坦言拒赔原因:确实有流量因素
- 《心灵杀手2》PS5 Pro实机演示:质量模式4K 30帧
- 玩家分享买二手盘暖心经历:盘上还有小贴纸表达感谢
- 殷秀梅.2014-沁园春·雪【太平洋影音】【WAV+CUE】
- 范玮琪.2003-真善美【福茂】【WAV+CUE】
- 陈雷.1995-烧翻卖【金圆唱片】【WAV+CUE】
- 乱石堆中一粒砂金——《使命召唤21》评测
- 【果娘聊天室】双11即将结束,各位今年买了啥?