⚠申明: 未经许可,禁止以任何形式转载,若要引用,请标注链接地址。 全文共计6077字,阅读大概需要3分钟
🌈更多学习内容, 欢迎👏关注👀【文末】我的个人微信公众号:不懂开发的程序猿
个人网站:https://jerry-jy.co/
TensorFlow进阶一
TensorFlow进阶一
一、任务需求
在介绍完张量的基本操作后,我们来进一步学习张量的进阶操作,如张量的合并与分割、范数统计、张量填充、张量限幅等,本节需要完成张量的合并(包括拼接和堆叠),张量的分割、向量范数、最值、均值、和,张量的比较等功能。
二、任务目标
1、掌握张量的合并
2、掌握张量的分割
3、掌握张量的最值、均值、和函数
4、掌握张量的比较
三、任务环境
1、python3.6
2、tensorflow2.4
3、jupyter
四、任务实施过程
(一)、张量的合并
1、合并是指将多个张量在某个维度上合并为一个张量。以某学校班级成绩册数据为例,设张量𝑨保存了某学校 1~4 号班级的成绩册,每个班级35个学
生,共 8 门科目成绩,则张量𝑨的shape为:[4,35,8];同样的方式,张量𝑩保存了其它6个班级的成绩册,shape为[6,35,8]。通过合并这2份成绩册,
便可得到学校所有班级的成绩册,记为张量𝑪,shape 应为[10,35,8],其中,10代表10个班级,35代表35个学生,8代表8门科目。这就是张量合并的意义所在。
import tensorflow as tf
a = tf.random.normal([4,35,8]) # 模拟成绩册 A
b = tf.random.normal([6,35,8]) # 模拟成绩册 B
tf.concat([a,b],axis=0) # 拼接合并成绩册


2、除了可以在班级维度上进行拼接合并,还可以在其他维度上拼接合并张量。考虑张量𝑨保存了所有班级的所有学生的前 4 门科目成绩,
shape 为[10,35,4],张量𝑩保存了剩下的 4门科目成绩,shape 为[10,35,4],则可以拼接合并 shape 为[10,35,8]的总成绩册张量。
a = tf.random.normal([10,35,4])
b = tf.random.normal([10,35,4])
tf.concat([a,b],axis=2) # 在科目维度上拼接


3、堆叠方式合并这 2 个班级成绩册,班级维度插入在 axis=0 位置
a = tf.random.normal([35,8])
b = tf.random.normal([35,8])
tf.stack([a,b],axis=0) # 堆叠合并为 2 个班级,班级维度插入在最前


4、同样可以选择在其他位置插入新维度,例如,最末尾插入班级维度
a = tf.random.normal([35,8])
b = tf.random.normal([35,8])
tf.stack([a,b],axis=-1) # 在末尾插入班级维度


5、此时班级的维度在 axis=2 轴上面,理解时也需要按着最新的维度顺序代表的视图去理解数据。若选择使用 tf.concat 拼接合并上述成绩单,则可以合并为:
a = tf.random.normal([35,8])
b = tf.random.normal([35,8])
tf.concat([a,b],axis=0) # 拼接方式合并,没有 2 个班级的概念


(二)、张量的分割
6、合并操作的逆过程就是分割,现在我们将总成绩册张量切割为 10 份
x = tf.random.normal([10,35,8])
# 等长切割为 10 份
result = tf.split(x, num_or_size_splits=10, axis=0)
len(result) # 返回的列表为 10 个张量的列表
10
7、可以查看切割后的某个张量的形状,它应是某个班级的所有成绩册数据,shape 为[35,8]
result[0]
<tf.Tensor: shape=(1, 35, 8), dtype=float32, numpy=
array([[[-0.71089584, -0.59059477,

最低0.47元/天 解锁文章
986

被折叠的 条评论
为什么被折叠?



