Tensorflow2.0笔记 - Tensor的数据索引和切片

这篇具有很好参考价值的文章主要介绍了Tensorflow2.0笔记 - Tensor的数据索引和切片。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        主要涉及的了基础下标索引"[]",逗号",",冒号":",省略号"..."操作,以及gather,gather_nd和boolean_mask的相关使用方法。

import tensorflow as tf
import numpy as np

tf.__version__

tensor = tf.random.uniform([1,5,5,3], minval=10, maxval=30, dtype=tf.int32)
print(tensor)
#最基础的索引方式,类似访问数组
print("========tensor[0]:========\n", tensor[0])
print("========tensor[0][1]:========\n", tensor[0][1])
print("========tensor[0][0][1]:========\n", tensor[0][0][1])
print("========tensor[0][0][0][1]:========\n", tensor[0][0][0][1])


#数据切片[start:end]方式,从start开始,end结束,注意切片方式总是返回一个vector
tensor = tf.range(10)

#取所有元素
print(tensor[:])
#取倒数1个元素
print(tensor[-1:])
#取倒数2个元素
print(tensor[-2:])
#取前两个元素
print(tensor[:2])
#取倒数第一个元素之前的所有元素
print(tensor[:-1])
#倒序采样
print(tensor[::-1])
#倒序间隔采样,倒序步长为2
print(tensor[::-2])
#从第8个元素开始,倒序采样,倒序步长为2
print(tensor[8::-2])
#从第6个元素开始,到第2个元素,倒序采样,倒序步长为1
print(tensor[6:2:-1])


#多维数据切片示例,生成一个随机数组,模拟4张5*5*3的图片数据,这里用整型数据做示例
tensor = tf.random.uniform([4,5,5,3], minval=0, maxval=256, dtype=tf.int32)

#取所有元素
print("=======tensor[:]========\n", tensor[:])
#取第一个维度,相当于取第一张图片
print("========tensor[0,:,:,:].shape========\n", tensor[0,:,:,:].shape)
#取第二个维度的所有信息
print("========tensor[0,1,:,:].shape========\n", tensor[0,1,:,:].shape)
#取最后一个维度的第一个维度信息,假设是RGB图像数据的话,就是取R通道的值
print("========tensor[:,:,:,0].shape========\n", tensor[:,:,:,0].shape)
#print(tensor[:,:,:,0])
#取最后一个维度的第二个维度信息,假设是RGB图像数据的话,就是取G通道的值
print("========tensor[:,:,:,1].shape========\n", tensor[:,:,:,1].shape)
#print(tensor[:,:,:,1])
#取所有图片的第1行
print("========tensor[:,0,:,:].shape========\n", tensor[:,0,:,:].shape)
print(tensor[:,0,:,:])

#间隔取数据,start:end:step,表示从start开始,end结束,每隔step取一个数据
#还是以前面的4张5*5*3的“图片”数据为例
#取前两张图片
print("========tensor[0:2,:,:,:].shape=========\n", tensor[0:2,:,:,:].shape)
#取所有图片的1,2,4行,1,2,4列的所有RGB数据
print("========tensor[:,0:5:2,0:5:2,:].shape=======\n", tensor[:,0:5:2,0:5:2,:].shape)
#取所有图片的1,3行,1,3列的所有RGB数据
print("========tensor[:,::3,::3,:].shape=======\n", tensor[:,::3,::3,:].shape)
#去掉图片上下的一行,左右的一列的所有RGB数据
print("========tensor[:,1:4:1,1:4:1,:].shape=======\n", tensor[:,0:5:2,0:5:2,:].shape)

#省略号方式索引,"...",表示取所有未指定维度的所有信息,可以结合","一起使用
tensor = tf.random.normal([2,4,5,5,3])
#取第0个元素的所有信息
print("========tensor[0,...].shape=========\n", tensor[0,...].shape)
#所有元素取最后一个维度某个数据,假设[2,4,5,5,3]表示的数据是2行数据,每一行数据由4张5*5*3大小的图片组成
#则下面的表达式取的是所有图片的R通道数据
print("========tensor[...,0].shape=========\n", tensor[...,0].shape)
#省略号在中间,还是以图片为例,取第0行元素的B通道数据
print("========tensor[0,...,2].shape=======\n", tensor[0,...,2].shape)


#selective索引方式,通过指定采样哪些维度的哪些数据来采样
#tf.gather,通过指定的索引和维度(axis)来收集数据
#假设下面的tensor表示的是4个班级,每个班级53个学生,5科的成绩
tensor = tf.random.normal([4,35,5])
#收集2号和3号班级的所有学生的成绩,等价于tensor[2:4].shape
print("========gather(axis=0,indices=[2,3])==========\n", tf.gather(tensor, axis=0, indices=[2,3]).shape)
#依次罗列班级2,1,3,0的所有学生的所有成绩
print("========gather(axis=0,indices=[2,1,3,0])==========\n", tf.gather(tensor, axis=0, indices=[2,1,3,0]).shape)
#收集每个班级的2,5,8,10,13号学生的所有成绩
print("========gather(axis=1,indices=[2,5,8,10,13])==========\n", tf.gather(tensor, axis=1, indices=[2,5,8,10,13]).shape)
#收集所有班级的第2门,第3门和第4门科目的成绩信息(以0为下标开始的序号)
print("========gather(axis=2,indices=[2,3,4])==========\n", tf.gather(tensor, axis=2, indices=[2,3,4]).shape)

#tf.gather_nd,更加高级的gather,可指定多个维度
#假设下面的tensor表示的是4个班级,每个班级53个学生,5科的成绩
tensor = tf.random.normal([4,35,5])

#假设我们想取1号班级5号学生的所有5科成绩
print("========gather_nd([1,5])==========\n", tf.gather_nd(tensor, [1,5]).shape)
#取0号班级,1号学生的第2门成绩,结果为标量
print("========gather_nd([0,1,2])==========\n", tf.gather_nd(tensor, [0,1,2]).shape)
#还是取0号班级,1号学生的第2门成绩,但是将标量放到一个向量中,注意中括号和结果的区别
print("========gather_nd([[0,1,2]])==========\n", tf.gather_nd(tensor, [[0,1,2]]).shape)
#取0号班级1号学生,2号班级5号学生和3号班级13号学生的所有5科成绩
print("========gather_nd([[0,1],[2,5],[3,13]])==========\n", tf.gather_nd(tensor, [[0,1],[2,5],[3,13]]).shape)

#boolean_mask索引,类似与opencv的mask概念,当对应mask为True时取对应元素,为False不取
#假设下面的tensor表示4张5*5*3的图片数据
tensor = tf.random.normal([4,5,5,3])

#不指定axis, 默认为0,表示第一个维度
#取第0张图片和第2张图片数据
print("========booean_mask(mask=[True,False,True,False])==========\n", tf.boolean_mask(tensor, mask=[True,False,True,False]).shape)
#指定axis=3,取所有图片的R,B通道数据
print("========booean_mask(mask=[True,False,True],axis=3)==========\n", tf.boolean_mask(tensor, mask=[True,False,True], axis=3).shape)
#指定多个维度
tensor = tf.random.uniform([2,3,4], minval=0, maxval=20, dtype=tf.int32)
print(tensor)
print("========tensor[0,1,:]====\n", tensor[0,0,:])
print("========tensor[0,2,:]====\n", tensor[0,2,:])
print("========tensor[1,1,:]====\n", tensor[1,1,:])
#取[0,0,:],[0,2,:],[1,1,:]
t = tf.boolean_mask(tensor, mask=[[True,False,True],[False,True,False]])
print("========booean_mask(mask=[[True,False,True],[False,True,False]])==========\n", t.shape)
print(t)

运行结果:

Tensorflow2.0笔记 - Tensor的数据索引和切片,TensorFlow2.0,tensorflow,笔记,人工智能,python,深度学习Tensorflow2.0笔记 - Tensor的数据索引和切片,TensorFlow2.0,tensorflow,笔记,人工智能,python,深度学习Tensorflow2.0笔记 - Tensor的数据索引和切片,TensorFlow2.0,tensorflow,笔记,人工智能,python,深度学习Tensorflow2.0笔记 - Tensor的数据索引和切片,TensorFlow2.0,tensorflow,笔记,人工智能,python,深度学习

Tensorflow2.0笔记 - Tensor的数据索引和切片,TensorFlow2.0,tensorflow,笔记,人工智能,python,深度学习 Tensorflow2.0笔记 - Tensor的数据索引和切片,TensorFlow2.0,tensorflow,笔记,人工智能,python,深度学习

Tensorflow2.0笔记 - Tensor的数据索引和切片,TensorFlow2.0,tensorflow,笔记,人工智能,python,深度学习

....

Tensorflow2.0笔记 - Tensor的数据索引和切片,TensorFlow2.0,tensorflow,笔记,人工智能,python,深度学习

Tensorflow2.0笔记 - Tensor的数据索引和切片,TensorFlow2.0,tensorflow,笔记,人工智能,python,深度学习

Tensorflow2.0笔记 - Tensor的数据索引和切片,TensorFlow2.0,tensorflow,笔记,人工智能,python,深度学习

Tensorflow2.0笔记 - Tensor的数据索引和切片,TensorFlow2.0,tensorflow,笔记,人工智能,python,深度学习

Tensorflow2.0笔记 - Tensor的数据索引和切片,TensorFlow2.0,tensorflow,笔记,人工智能,python,深度学习

Tensorflow2.0笔记 - Tensor的数据索引和切片,TensorFlow2.0,tensorflow,笔记,人工智能,python,深度学习

Tensorflow2.0笔记 - Tensor的数据索引和切片,TensorFlow2.0,tensorflow,笔记,人工智能,python,深度学习文章来源地址https://www.toymoban.com/news/detail-819074.html

到了这里,关于Tensorflow2.0笔记 - Tensor的数据索引和切片的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Tensorflow2.0笔记 - 修改形状和维度

            本次笔记主要使用reshape,transpose,expand_dim,和squeeze对tensor的形状和维度进行操作。         运行结果:  

    2024年01月16日
    浏览(38)
  • Tensorflow2.0笔记 - Broadcasting和Tile

            关于broadcasting的介绍,参考这篇文章。         https://blog.csdn.net/python_LC_nohtyp/article/details/104097417         运行结果

    2024年01月20日
    浏览(38)
  • Tensorflow2.0笔记 - 不使用layer方式,简单的MNIST训练

            本笔记不使用layer相关API,搭建一个三层的神经网络来训练MNIST数据集。         前向传播和梯度更新都使用最基础的tensorflow API来做。         运行结果:

    2024年01月20日
    浏览(48)
  • TensorFlow2进行CIFAR-10数据集动物识别,保存模型并且进行外部下载图片测试

    首先,你已经安装好anaconda3、创建好环境、下载好TensorFlow2模块并且下载好jupyter了,那么我们就直接打开jupyter开始进行CIFAR10数据集的训练。 第一步:下载CIFAR10数据集 下载网址:http://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz 将数据集下载到合适的路径,方便模型训练的时候调用

    2024年02月08日
    浏览(38)
  • tensorflow2基础

    TensorFlow 包含以下特性: 训练流程 数据的处理  :使用 tf.data 和 TFRecord 可以高效地构建和预处理数据集,构建训练数据流。同时可以使用 TensorFlow Datasets 快速载入常用的公开数据集。 模型的建立与调试  :使用即时执行模式和著名的神经网络高层 API 框架 Keras,结合可视化

    2024年02月11日
    浏览(47)
  • tensorflow2模型保存和恢复

    有两种方法可以保存模型: ·使用检查点,一种简单的在硬盘上保存变量的方法 ·使用SavedModel,模型结构及检查点 检查点不包含任何关于模型自身的描述:它们只是一种简单的存储参数并能让开发者正确恢复它的方法。 SavedModel格式在保存参数值的基础上加上了计算过程的序

    2024年02月11日
    浏览(49)
  • tensorflow2 模型建立与训练

    模型的构建:  tf.keras.Model  和  tf.keras.layers 模型的损失函数:  tf.keras.losses 模型的优化器:  tf.keras.optimizer 模型的评估:  tf.keras.metrics Keras 有两个重要的概念:  模型(Model)  和  层(Layer)  。层将各种计算流程和变量进行了封装(例如基本的全连接层,CNN 的卷积层

    2024年02月10日
    浏览(66)
  • TensorFlow2.0教程1-Eager

    2023年11月06日
    浏览(38)
  • Tensorflow2——Eager模式简介以及运用

    TensorFlow的eager执行模式是一个重要的编程环境,它能立即评估运算,而无须构建图:运算会实时返回值,而不是构建一个计算图后再运行。这使得使用TensorFlow和调试模型更简单,并且可以减少很多样板代码。 eager执行模式对研究和实验来说是一个灵活的机器学习平台,有下列

    2024年02月11日
    浏览(54)
  • Tensorflow2 GPU版本-极简安装方式

    1、配置conda环境加速 https://wtl4it.blog.csdn.net/article/details/135723095 https://wtl4it.blog.csdn.net/article/details/135723095 2、tensorflow-gpu安装

    2024年01月21日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包