Tensorflow(八) —— Tensor的合并与切割

TensorFlow 2:深度解析Tensor合并与切割操作
本文详细介绍了TensorFlow中常用的tf.concat、tf.split、tf.stack和tf.unstack操作,通过实例展示了如何沿指定轴拼接和切分张量,并对比了它们之间的区别。此外,还讲解了unstack与stack的可逆性,以及split的灵活性,适合初学者理解张量操作技巧。
部署运行你感兴趣的模型镜像

1. 主要操作方式

  • 1、tf.concat # 常用
  • 2、tf.split # 常用
  • 3、tf.stack # 常用
  • 4、tf.unstack

2. concat操作

指定axis则沿该轴进行拼接

# ********************* concat
"""
指定axis则沿该轴进行拼接
"""
a = tf.random.normal([2,28,28,3])
b = tf.random.normal([3,28,28,3])
c = tf.concat([a,b],axis = 0)
print("c:",c.shape)

d = tf.random.uniform([4,14,28,3])
e = tf.random.uniform([4,14,28,3])
f = tf.concat([d,e],axis = 1)
print("f:",f.shape)

3. stack操作

  • create new dim
  • 在指定轴上创建新的一个维度来盛装数据
# ********************** stack
"""
create new dim
在指定轴上创建新的一个维度来盛装数据
"""
a = tf.ones([4,28,28,3])
b = tf.zeros_like(a)

c1 = tf.concat([a,b],axis = 0)
print("c1:",c1.shape)
c2 = tf.stack([a,b],axis = 0)
print("c2:",c2.shape)

c3 = tf.stack([a,b],axis = 3)
print("c3:",c3.shape)

c4 = tf.concat([a,b],axis = -1)
print("c4:",c4.shape)

4. concat 与 stack 的区别

  • 1、concat约束:除了需要拼接那个轴可以不一致,其它所有轴都需要相同。
  • 2、stack约束:所有轴都必须维持一致

5. unstack & stack 为可逆操作

# ********************** unstack & stack 可逆
a = tf.ones([4,28,28,3])
b = tf.zeros_like(a)

c = tf.stack([a,b],axis = 0)
print("c:",c.shape)

d = tf.unstack(c,axis = 0)
print("d:",d[0].shape,d[1].shape)

e = tf.unstack(c,axis = 3)
print("e:",len(e))
"""
得到28个形状相同的Tensor
"""
e[27].shape

6. split操作

  • unstack沿axis轴等分为axis轴shape的数量
  • split可以指定等分的数量
# ************************ split
"""
unstack沿axis轴等分为axis轴shape的数量
split可以指定等分的数量
"""
a = tf.zeros([4,28,28,3])
b = tf.unstack(a,axis = 1)
print("b:",len(b))

c = tf.split(a,axis = 1,num_or_size_splits = 7)
print("c:",len(c))
print("c:",c[6].shape)

d = tf.split(a,axis = 1,num_or_size_splits = [10,10,8])
print("d:",len(d))
print("d:",d[1].shape)

本文为参考龙龙老师的“深度学习与TensorFlow 2入门实战“课程书写的学习笔记

by CyrusMay 2022 04 16

您可能感兴趣的与本文相关的镜像

TensorFlow-v2.15

TensorFlow-v2.15

TensorFlow

TensorFlow 是由Google Brain 团队开发的开源机器学习框架,广泛应用于深度学习研究和生产环境。 它提供了一个灵活的平台,用于构建和训练各种机器学习模型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值