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

作者:我是小白呀 时间:2022-01-01 21:47:39 

合并与分割

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

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可以创建一个新的维度来合并两个张量.

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

格式:


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()可以把一个张量划分为几个子张量.

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

格式:


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)>]

数据统计

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

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.

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

格式:


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])>)

来源:https://iamarookie.blog.csdn.net/article/details/117755839

标签:TensorFlow2,合并与分割,数据统计
0
投稿

猜你喜欢

  • MySQL导致索引失效的几种情况

    2024-01-28 05:26:56
  • go goroutine 怎样进行错误处理

    2024-05-22 10:14:39
  • 用Python设计一个经典小游戏

    2023-07-11 02:57:09
  • Python利用filestools模块实现水印添加

    2021-09-11 06:36:08
  • DataGrid使用心得(调用及连接数据库等等)

    2024-01-23 17:31:15
  • Python统计可散列的对象之容器Counter详解

    2023-09-23 18:30:50
  • python基于SMTP发送QQ邮件

    2023-04-07 21:11:51
  • Python 提速器numba

    2021-04-27 21:14:06
  • python游戏测试工具自动化遍历游戏中所有关卡

    2021-10-05 13:03:20
  • python使用socket远程连接错误处理方法

    2023-05-13 04:56:48
  • Pytorch之扩充tensor的操作

    2023-10-09 01:41:59
  • keras使用Sequence类调用大规模数据集进行训练的实现

    2021-01-03 20:24:35
  • Python random模块用法解析及简单示例

    2022-06-02 11:05:14
  • oracle 常见等待事件及处理方法

    2009-04-24 12:01:00
  • pytorch geometric的GNN、GCN的节点分类方式

    2022-12-24 16:01:23
  • 解决django migrate报错ORA-02000: missing ALWAYS keyword

    2023-04-15 14:19:54
  • 能否用显示/隐藏层来控制FLASH播放与停止

    2008-10-27 14:08:00
  • javascript拖拽效果延伸学习

    2024-04-16 08:52:24
  • Git建立本地仓库并上传到Gitee的详细步骤

    2023-03-06 20:45:21
  • tensorflow实现残差网络方式(mnist数据集)

    2023-08-10 08:33:31
  • asp之家 网络编程 m.aspxhome.com