TensorFlow2.4(三)---- 张量的操作(数据处理_维度变换、数据取样,以鸢尾花数据为例)_适合python机器学习的最全最细讲解

本文详细介绍了TensorFlow2.4中张量的操作,包括维度变换如reshape、concat、expand_dims、squeeze和transpose,以及数据取样方法如gather。通过实例展示了如何在鸢尾花数据集上进行这些操作,强调了理解维度概念的重要性。
摘要由CSDN通过智能技术生成

目录

前言

函数表

维度变换

tf.reshape()

 tf.concat()、tf.contrack() 

tf.expand_dims() 和 tf.squeeze()

tf.transpose()

数据取样(特定行列的选取)

与numpy的取法

 gather()

鸢尾花数据链接


前言

这一篇文章主要分两部分讲解张量之间的数据处理,第一部分主要是张量的维度变换,包括张量形状的改变、维度的增加和删除、转置以及张量的拼接;第二部分是数据的采样,主要以鸢尾花数据为例讲解特定行、列的选取


函数表

将全文讲解过的函数归纳于此表,便于参考和查询

形状处理部分 解释
tf.reshape(tensor,shape) 改变形状
tf.concat(tensors,axis) 张量拼接
tf.expand_dims(input,axis) 增加维度
tf.squeeze(input,axis) 删除维度
tf.transpose(a,perm) 转置
数据取样(张量以tf1为例) 解释
tf.gather(params,axis,indices) 按索引值取值

维度变换

在讲解函数之前,为了更好的理解“维”这个概念,这里有必要做出个人对TensorFlow中的“维”的看法,首先这个维度最初的定义是为了咱们更好地去理解数据间的各种排列组合而人为定义的,比如我们习惯说的零维数据就是一个点,一维数据就是一条线,二维数据就是一个面,三维便是一个体;每多一个维度,数据就会多向着某个方向展开;而张量中也谈及维度的概念,我们说三维张量其实就是三维数组的意思,但是有时候也会习惯性将数据的行数和列数称之为“维”,比如三行两列的二维张量,其在行上面(从上往下看)就有三个维(三行),显然依次类推,在列上面(左右看)就有两个维(两列);其实也是一种叫法的不统一,大家在理解这些概念的时候就见仁见智了。

  • tf.reshape()

tf.reshape(tensor,shape);第一个参数tensor是传入的张量,第二个参数shape是将张量重组成需要的形状。对于shape这个参数,作者略微提及几点:1、形状改变后,数据填入新形状的顺序是按照“从左至右、从上至下”的顺序从原张量中取出数据然后按照这个原则将数据填入新张量;2、新张量形状维度参数的乘积必须等于原数据维度参数的乘积,比如一个4X4的二维张量,其两个维度参数的乘积是16,那么新张量的维度参数的乘积必须也是16,比如这组数据可以填入一个2X2X4的三维张量

  • 将 1X16 的张量形状改变成 2X8
import tensorflow as tf
tf1 = tf.range(16) # 创建从0到15的张量
tf2 = tf.reshape(tf1,[2,8]) # 将其改变成一个 2 X 8 的二维数组,数据排序规则是从左往右,排满之后从上向下排

output:

>>>print(tf1)
tf.Tensor([ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15], shape=(16,), dtype=int32)
>>>print(tf2)
tf.Tensor(
[[ 0  1  2  3  4  5  6  7]
 [ 8  9 10 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值