持续更新ing
各种范数定义:
1.二范数: 所有元素平方和再开根号
2.一范数: 所有数值的绝对值之和
3.无穷范数: 所有数值中最大值的绝对值
二范数
a = tf.ones([2, 2])
# 所有数值进行求二范数
tf.norm(a)
# 第一纬度为一个单位进行求范数
tf.norm(a, ord=2, axis=1) # ord设置求第几范数,默认为1
一范数
a = tf.ones([2, 2])
# 求第一范数: 所有元素的绝对值相加
tf.norm(a, ord=1)
# 求第0纬度的第一范数:每一列元素的绝对值相加
tf.norm(a, ord=1, axis=0)
# 求第1纬度的第一范数:每一行元素的绝对值相加
tf.norm(a, ord=1, axis=1)
tensorflow中的求 min/max/mean
因为会将矩阵的纬度减小(降维)所以要加reduce作为前缀:
例如 [[1, 2], [3, 4]]
求最大值,结果为 4
shape从[2, 2]变为标量
当然可以通过axis设置进行求解的纬度
tf.reduce_min()
tf.reduce_max()
tf.reduce_mean()
tensorflow中求 min/max所在索引
tf.argmax()
tf.argmin()
各个元素进行比较 tf.equal()
a = tf.constant([1, 2, 3, 2, 5])
b = tf.range(5)
tf.equal(a, b) # 输出:<tf.Tensor: id=5, shape=(5,), dtype=bool, numpy=array([False, False, False, False, False])>
各个元素进行求和
tf.reduce_sum()
将数据去重
返回两个数值 一个是去重后的数据 一个是相同数值的数据的索引
a = tf.constant([4, 2, 2, 4, 3])
tf.unique(a)
# Unique(y=<tf.Tensor: id=8, shape=(3,), dtype=int32, numpy=array([4, 2, 3], dtype=int32)>, idx=<tf.Tensor: id=9, shape=(5,), dtype=int32, numpy=array([0, 1, 1, 0, 2], dtype=int32)>)
利用 [4, 2, 3]
与 [0, 1, 1, 0, 2]
通过 tf.gather([4, 2, 3], [0, 1, 1, 0, 2])
可还原得到 a = tf.constant([4, 2, 2, 4, 3])
张量排序
通过设置参数 direction
为 DESCENDING
则为降序排列 默认为升序排列
tf.sort()
得到排序后的数据:
>>> a
<tf.Tensor: id=17, shape=(5,), dtype=float32, numpy=
array([-0.08162852, 0.26122522, 1.1900756 , -1.5740612 , -0.08265585],
dtype=float32)>
>>> tf.sort(a)
<tf.Tensor: id=30, shape=(5,), dtype=float32, numpy=
array([-1.5740612 , -0.08265585, -0.08162852, 0.26122522, 1.1900756 ],
dtype=float32)>
tf.argsort()
得到排序后的索引
>>> tf.argsort(a)
<tf.Tensor: id=42, shape=(5,), dtype=int32, numpy=array([3, 4, 0, 1, 2], dtype=int32)>
获取前几个最大/最小值
>>> a
<tf.Tensor: id=61, shape=(3, 3), dtype=float32, numpy=
array([[-0.8013328 , 0.37581706, 0.20416221],
[ 0.30301005, -0.47149792, 1.5009788 ],
[-0.99024796, 0.47331947, -0.47054312]], dtype=float32)>
>>> tf.math.top_k(a, 2)
TopKV2(values=<tf.Tensor: id=63, shape=(3, 2), dtype=float32, numpy=
array([[ 0.37581706, 0.20416221],
[ 1.5009788 , 0.30301005],
[ 0.47331947, -0.47054312]], dtype=float32)>, indices=<tf.Tensor: id=64, shape=(3, 2), dtype=int32, numpy=
array([[1, 2],
[2, 0],
[1, 2]], dtype=int32)>)
# 通过indices获取索引
>>> tf.math.top_k(a, 2).indices
<tf.Tensor: id=71, shape=(3, 2), dtype=int32, numpy=
array([[1, 2],
[2, 0],
[1, 2]], dtype=int32)>
# 通过values获取数值
>>> tf.math.top_k(a, 2).values
<tf.Tensor: id=74, shape=(3, 2), dtype=float32, numpy=
array([[ 0.37581706, 0.20416221],
[ 1.5009788 , 0.30301005],
[ 0.47331947, -0.47054312]], dtype=float32)>