TensorFlow2基本操作之合并分割与统计

目录
  • 合并与分割
    • tf.concat
    • tf.stack
    • tf.unstack
    • tf.split
  • 数据统计
    • tf.norm
    • reduce_min/max/mean
    • argmax / argmin
    • tf.equal
    • tf.unique

合并与分割

tf.concat

tf.concat可以帮助我们实现拼接操作.

格式:

tf.concat(
    values, axis, name='concat'
)

参数:

  • values: 一个 tensor 或 tensor list
  • axis: 操作的维度
  • name: 数据名称, 默认为 “concat”

例子:

part_1 = tf.zeros([5, 3])
print(part_1)

part_2 = tf.ones([5, 3])
print(part_2)

# 竖向拼接
result_1 = tf.concat([part_1, part_2], axis=0)
print(result_1)

# 横向拼接
result_2 = tf.concat([part_1, part_2], axis=1)
print(result_2)

输出结果:

tf.Tensor(
[[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]], shape=(5, 3), dtype=float32)
tf.Tensor(
[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]], shape=(5, 3), dtype=float32)
tf.Tensor(
[[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]
[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]], shape=(10, 3), dtype=float32)
tf.Tensor(
[[0. 0. 0. 1. 1. 1.]
[0. 0. 0. 1. 1. 1.]
[0. 0. 0. 1. 1. 1.]
[0. 0. 0. 1. 1. 1.]
[0. 0. 0. 1. 1. 1.]], shape=(5, 6), dtype=float32)

tf.stack

rf.stack可以创建一个新的维度来合并两个张量.

格式:

tf.stack(
    values, axis=0, name='stack'
)

参数:

  • values: 一个 tensor list
  • axis: 操作的维度
  • name: 数据名称, 默认为 “stack”

例子:

part_1 = tf.zeros([5, 3])
print(part_1)

part_2 = tf.ones([5, 3])
print(part_2)

# 头拼接
result_1 = tf.stack([part_1, part_2], axis=0)
print(result_1)

# 尾拼接
result_2 = tf.stack([part_1, part_2], axis=2)
print(result_2)

输出结果:

tf.Tensor(
[[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]], shape=(5, 3), dtype=float32)
tf.Tensor(
[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]], shape=(5, 3), dtype=float32)
tf.Tensor(
[[[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]]

[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]], shape=(2, 5, 3), dtype=float32)
tf.Tensor(
[[[0. 1.]
[0. 1.]
[0. 1.]]

[[0. 1.]
[0. 1.]
[0. 1.]]

[[0. 1.]
[0. 1.]
[0. 1.]]

[[0. 1.]
[0. 1.]
[0. 1.]]

[[0. 1.]
[0. 1.]
[0. 1.]]], shape=(5, 3, 2), dtype=float32)

tf.unstack

tf.unstack是一个矩阵分解函数.

格式:

# unstack
tf.unstack(
value, num=None, axis=0, name='unstack'
)

参数:

  • values: 一个 tensor, 维度大于 0
  • num: 轴的长度
  • axis: 操作的维度
  • name: 数据名称, 默认为 “unstack”

例子:

a = tf.stack([tf.zeros([5, 3]), tf.ones([5, 3])], axis=0)
print(a)

b = tf.unstack(a, axis=0)
print(b)

输出结果:

tf.Tensor(
[[[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]]

[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]], shape=(2, 5, 3), dtype=float32)
[<tf.Tensor: shape=(5, 3), dtype=float32, numpy=
array([[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.]], dtype=float32)>, <tf.Tensor: shape=(5, 3), dtype=float32, numpy=
array([[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]], dtype=float32)>]

tf.split

tf.split()可以把一个张量划分为几个子张量.

格式:

tf.split(
    value, num_or_size_splits, axis=0, num=None, name='split'
)

参数:

  • value: 待切分的张量
  • num_or_size_splits: 切成几份
  • axis: 操作的维度
  • num: num_or_size_splits 不能实现的情况下使用
  • name: 数据名称, 默认为 “split”

例子:

# split
a = tf.stack([tf.zeros([5, 3]), tf.ones([5, 3])], axis=0)
print(a)

b = tf.split(a, 2)
print(b)

输出结果:

tf.Tensor(
[[[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]]

[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]], shape=(2, 5, 3), dtype=float32)
[<tf.Tensor: shape=(1, 5, 3), dtype=float32, numpy=
array([[[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.]]], dtype=float32)>, <tf.Tensor: shape=(1, 5, 3), dtype=float32, numpy=
array([[[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]]], dtype=float32)>]

数据统计

tf.norm

tf.norm可以帮助我们计算向量, 矩阵, 张量的范数.

格式:

tf.norm(
    tensor, ord='euclidean', axis=None, keepdims=None, name=None
)

参数:

  • tensor: 输入的张量
  • ord: 范数的顺序
  • axis: 操作的维度
  • keep_dims: 如果为 True, 则 axis 中指定的轴将保持为大小 1
  • name: 数据名称

例子:

a = tf.fill([2, 2], 2.0)
print(a)

# sqrt(2^2 * 4) = sqrt(16) = 4
b = tf.norm(a)
print(b)

# [2 + 2, 2 + 2] = [4, 4]
c = tf.norm(a, ord=1, axis= 0)
print(c)

# [sqrt(2^2 + 2^2), sqrt(2^2 + 2^2)] = [sqrt(8), sqrt(8)]
d = tf.norm(a, ord=2, axis= 0)
print(d)

输出结果:

tf.Tensor(
[[2. 2.]
[2. 2.]], shape=(2, 2), dtype=float32)
tf.Tensor(4.0, shape=(), dtype=float32)
tf.Tensor([4. 4.], shape=(2,), dtype=float32)
tf.Tensor([2.828427 2.828427], shape=(2,), dtype=float32)

reduce_min/max/mean

计算一个张量各个维度上元素的最小值 / 最大值 / 平均值.

格式:

tf.math.reduce_min / reduce_max / reduce_mean(
    input_tensor, axis=None, keepdims=False, name=None
)

参数:

  • input_tensor: 传入的张量
  • axis: 维度, 默认计算所有维度
  • keepdims: 如果为真保留维度, 默认为 False
  • name: 数据名称

例子:

a = tf.reshape(tf.range(9), [3, 3])
print(a)

min = tf.reduce_min(a)
print(min)

max = tf.reduce_max(a)
print(max)

输出结果:

tf.Tensor(
[[0 1 2]
[3 4 5]
[6 7 8]], shape=(3, 3), dtype=int32)
tf.Tensor(0, shape=(), dtype=int32)
tf.Tensor(8, shape=(), dtype=int32)

argmax / argmin

tf.argmax/tf.argmin可以帮我们找到最大 / 最小值所在的索引 (index).

格式:

tf.math.argmax(
    input, axis=None, output_type=tf.dtypes.int64, name=None
)

参数:

  • input: 输入
  • axis: 操作的维度
  • output_type: 输出数据类型, 默认为 int64
  • name: 数据名称

例子:

# argmax / argmin
a = tf.reshape(tf.range(9), [3, 3])
print(a)

max = tf.argmax(a)
print(max)

min = tf.argmin(a)
print(min)

输出结果:

tf.Tensor(
[[0 1 2]
[3 4 5]
[6 7 8]], shape=(3, 3), dtype=int32)
tf.Tensor([2 2 2], shape=(3,), dtype=int64)
tf.Tensor([0 0 0], shape=(3,), dtype=int64)

tf.equal

tf.equal可以帮助我们判断两个张量是否相等. 返回 True / False.

格式:

tf.math.equal(
    x, y, name=None
)

例子:

a = tf.zeros(5, dtype=tf.float32)
print(a)

b = tf.range(5, dtype=tf.float32)
print(b)

print(tf.equal(a, b))

输出结果:

tf.Tensor([0. 0. 0. 0. 0.], shape=(5,), dtype=float32)
tf.Tensor([0. 1. 2. 3. 4.], shape=(5,), dtype=float32)
tf.Tensor([ True False False False False], shape=(5,), dtype=bool)

tf.unique

tf.unique可以帮我们找出张量中不重复的值

格式:

tf.unique(
    x, out_idx=tf.dtypes.int32, name=None
)

参数:

  • input: 输入
  • output_type: 输出数据类型, 默认为 int32
  • name: 数据名称

例子:

a = tf.range(5)
print(tf.unique(a))

b = tf.constant([4, 2, 2, 4, 3])
print(tf.unique(b))

输出结果:

Unique(y=<tf.Tensor: shape=(5,), dtype=int32, numpy=array([0, 1, 2, 3, 4])>, idx=<tf.Tensor: shape=(5,), dtype=int32, numpy=array([0, 1, 2, 3, 4])>)
Unique(y=<tf.Tensor: shape=(3,), dtype=int32, numpy=array([4, 2, 3])>, idx=<tf.Tensor: shape=(5,), dtype=int32, numpy=array([0, 1, 1, 0, 2])>)

到此这篇关于一小时学会TensorFlow2基本操作之合并分割与统计的文章就介绍到这了,更多相关TensorFlow2合并分割与统计内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • TensorFlow2基本操作之 张量排序 填充与复制 查找与替换

    目录 张量排序 tf.sort tf.argsort tf.math.top_k 填充与复制 tf.pad tf.tile 查找与替换 tf.where (第一种) tf.where (第二种) tf.scatter_nd 张量排序 tf.sort tf.sort函数可以帮我们对张量进行排序. 格式: tf.sort( values, axis=-1, direction='ASCENDING', name=None ) 参数: values: 要进行排序的张量 axis: 操作维度 direc

  • 一小时学会TensorFlow2之基本操作1实例代码

    目录 概述 创建数据 创建常量 创建数据序列 创建图变量 tf.zeros tf.ones tf.zeros_like tf.ones_like tf.fill tf.gather tf.random 正态分布 均匀分布 打乱顺序 获取数据信息 获取数据维度 数据是否为张量 数据转换 转换成张量 转换数据类型 转换成 numpy 概述 TensorFlow2 的基本操作和 Numpy 的操作很像. 今天带大家来看一看 TensorFlow 的基本数据操作. 创建数据 详细讲解一下 TensorF

  • 一小时学会TensorFlow2之基本操作2实例代码

    目录 索引操作 简单索引 Numpy 式索引 使用 : 进行索引 tf.gather tf.gather_nd tf.boolean_mask 切片操作 简单切片 step 切片 维度变换 tf.reshape tf.transpose tf.expand_dims tf.squeeze Boardcasting tf.boardcast_to tf.tile 数学运算 加减乘除 log & exp pow & sqrt 矩阵相乘 @ 索引操作 简单索引 索引 (index) 可以帮助我们

  • TensorFlow2基本操作之合并分割与统计

    目录 合并与分割 tf.concat tf.stack tf.unstack tf.split 数据统计 tf.norm reduce_min/max/mean argmax / argmin tf.equal tf.unique 合并与分割 tf.concat tf.concat可以帮助我们实现拼接操作. 格式: tf.concat( values, axis, name='concat' ) 参数: values: 一个 tensor 或 tensor list axis: 操作的维度 na

  • TensorFlow人工智能学习数据合并分割统计示例详解

    目录 一.数据合并与分割 1.tf.concat() 2.tf.split() 3.tf.stack() 二.数据统计 1.tf.norm() 2.reduce_min/max/mean() 3.tf.argmax/argmin() 4.tf.equal() 5.tf.unique() 一.数据合并与分割 1.tf.concat() 填入两个tensor, 指定某维度,在指定的维度合并.除了合并的维度之外,其他的维度必须相等. 2.tf.split() 填入tensor,指定维度,指定分割的数量

  • js数组常用操作方法小结(增加,删除,合并,分割等)

    本文实例总结了js数组常用操作方法.分享给大家供大家参考,具体如下: var arr = [1, 2, 3, 4, 5]; //删除并返回数组中第一个元素 var theFirst = arr.shift(); alert(theFirst);//返回1 number alert(arr);//2,3,4,5 object //删除并返回数组中最后一个元素 var theLast = arr.pop(); alert(theLast);//返回5 number alert(arr);//2,3,

  • Linux中split大文件分割和cat合并文件详解

    前言 当需要将较大的数据上传到服务器,或从服务器下载较大的日志文件时,往往会因为网络或其它原因而导致传输中断而不得不重新传输.这种情况下,可以先将大文件分割成小文件后分批传输,传完后再合并文件. 1. 分割文件 文件分割可以使用split命令,该即支持文本文件分割,又支持二进制文件分割:而合并文件可以使用cat命令. 1.1 文本文件分割 分割文本文件时,可以按文件大小分割,也可以按文本行数分割. 按文件大小分割 按文件大小分割文件时,需要以-C参数指定分割后的文件大小: $ split -C

  • js合并两个数组生成合并后的key:value数组

    核心代码 // var activeSubjectsName = ["语文", "数学", "英语", "思想品德", "科学"]; // var activeSubjectsNum = [46, 2, 2, 28, 29]; // var activeSubjectsArr = []; for (var i = 0; i < activeSubjectsName.length; i++) { con

  • Python中列表,元组,字典和集合的区别及它们之间的转换

    目录 (1)集合set (2)元组tuple (3)列表list (4)字典dict 下面是一些小例子 字典的分割.合并 list分割.合并 前排提示:元祖是错误的写法(带错别字),部分文章写为元祖系误,正确的说法为元组. 首先了解序列. 序列是具有先后关系的一组元素,它是一维元素向量,元素类型可以不同. 元素间由序号引导,通过下标访问序列的特定元素. 序列是一个基类类型,元组.列表是序列类型的一种扩展,继承序列类型的全部通用操作. (1)集合set 集合就是我们数学学的集合,集合最好的应用是去

  • Python数据挖掘Pandas详解

    目录 1 DataFrame 1.1 构造dataframe 利用DataFrame函数 1.2 常用操作(设置索引) 1.3 MultiIndex与Panel 1.4 Series 2 基本数据操作 2.1 索引操作 2.2 赋值操作 2.3 排序 2.4 数学运算 2.5 统计运算 3 画图 3.1 pandas.DataFrame.plot 4 文件读取写入 4.1 CSV文件 4.2 HDF5文件 4.3 JSON文件 5 高级处理 5.1 缺失值(标记值)处理 5.2 离散化 5.3

随机推荐