Tensorflow进阶
张量合并
1.拼接
2.堆叠
无论哪种方式,相应维度必须一致
分割
合并的逆过程
将1个张量拆成多个张量
1. split
等份分割
不等份分割
传入列表,表示分割后每一部分的长度
2. unstack
可以看出,stack
是在合并张量时增加了维度,而unstack
是在分割张量时减少了维度
【注意】unstack
一定会将原张量按照axis
指定的维度方向分割成全部的部分的长度都是1的张量,因为只有这样才能将shape中为1的维度方向去掉
范数
主要使用L1范数、L2范数和无穷范数
常用统计量
最值:tf.reduce_max
、tf.reduce_min
均值:tf.reduce_mean
和:tf.reduce_sum
指定axis
不指定axis
此时会对全局求解:
应用场景
求解所有样本的平均误差:
在分类问题中,求解概率最大值所在下标,即label
假设有两个样本,做10分类问题
使用tf.reduce_max
只能求解最大值,而使用tf.argmax
可以求解最大值所在索引号(下标)
所以,这两个样本所属类别分别为8和9
张量比较
还是拿10分类的栗子,假设有100个样本
开始比较
计算准确率
对了10个,因此准确率为10%
除了比较相等的 tf.equal(a, b)
,还有其它的比较函数,如下
填充(Padding)
使用tf.pad(x,paddings)
之后两者维度一致了,可以做Satck
常用于自然语言处理
在处理图像时,需要在多个维度进行填充,就像这样
上面的图中,对width
和height
进行了填充,代码如下
这里对width
和height
的开头和结尾都填充了两个0
图像由28*28
变成了32*32
复制
仍旧用tf.tile()
函数
[2,3,3,1]
的4个元素分别代表了4个维度要复制多少份:
1代表不复制,2代表复制1份,3代表复制2份,以此类推
数据限幅
下限幅: tf.maximum(x, a)
上限幅:tf.minimum(x, a)
应用
实现ReLU函数
实现上下限幅
另外,也可以直接使用tf.clip_by_value
实现上下限幅