tensorflow2.x:数据统计

一、范数概念

L1范数:定义为向量所有元素绝对值之和:
在这里插入图片描述

L2范数:定义为向量所有元素的平方和再开根号:
在这里插入图片描述
∞ −范数:定义为向量x的所有元素绝对值的最大值:
在这里插入图片描述
对于矩阵、张量,同样可以利用向量范数的计算公式,等价于将矩阵、张量打平成向量后计算。

"""
范数
tf.norm(x, ord, axis)
ord 指定为 1、 2 时计算 L1、 L2 范数,指定为 np.inf 时计算∞范数
axis:axis=0表示对矩阵的每一列求范数,axis=1表示对矩阵的每一行求范数
L1范数:定义为向量𝒙的所有元素绝对值之和
L2范数:定义为向量𝒙的所有元素的平方和,再开根号
∞ (无穷大)范数,定义为向量𝒙的所有元素绝对值的最大值
"""
x = tf.ones([2,2])
print(tf.norm(x, ord=1, axis=0))
print(tf.norm(x,ord=1))# 计算L1范数
print(tf.norm(x,ord=2))# 计算L2范数
print(tf.norm(x,ord=3))# 计算L3范数
print(tf.norm(x,ord=np.inf))# 计算∞范数

二、最大最小值、均值、求和

tf.reduce_max(x, axis), tf.reduce_min(x, axis), tf.reduce_mean(x, axis), tf.reduce_sum(x, axis) 可以求解张量在某个维度上的最大、最小、均值、和,也可以求全局最大、最小、均值、和。

axis:在axis上维度进行的操作,例如,axis=0表示在第0维度(列)上进行求最值;axis=1表示在第1维度(行)上进行求最值
当axis为空时,tf.reduce_*函数会求解出全局元素的最大、最小、均值、和
# 创建一个张量
x = tf.random.normal([4,5])
# print(x)
# # 统计概率维度上的最大值
max = tf.reduce_max(x,axis=0)
# # 统计概率维度上的最小值
min = tf.reduce_min(x,axis=1)
# 统计概率维度上的均值
mean = tf.reduce_mean(x,axis=1)
# # 统计概率维度上的和
sum = tf.reduce_sum(x,axis=1)

三、获得最值所在的索引号

通过tf.argmax(x, axis)
         tf.argmin(x, axis)
可以分别求出在 axis 轴上,x 的最大值、最小值所在的索引号

x = tf.random.normal([4,5])
maxIndex = tf.argmax(x,axis=0)

四、张量比较

作用:计算分类任务的准确率等指标,一般需要将预测结果和真实标签比较,统计比较结果中正确的数量来就是计算准确率

通过tf.equal(a, b)完成张量之间的对比操作

a = tf.constant([1, 2, 3, 2, 5])
b = tf.range(5)
equal = tf.equal(a, b)
print("b:",b)
print("equal:", equal)

tf.equal()函数返回布尔型的张量之间比较的结果,之后只需要统计张量中 True 元素的个数,即可知道预测正确的个数。
为了达到这个目的,我们先将布尔型转换为整型张量,再求和其中 1 的个数,可以得到比较结果中 True 元素的个数

# boolean型转为int型
result = tf.cast(equal, dtype=tf.int32)
#统计True的个数
correct = tf.reduce_sum(result)
print("correct:", correct)
#计算准确率accuracy, 公式:结果为true的个数/样本个数
accuracy = correct / result.shape[0]

五、去重与还原

tf.unique(tensor) 去除重复
tf.gather(tensor, idx) 还原

a = tf.constant([4,2,2,1,4,0])
unique_tensor, idx = tf.unique(a)
print("unique_tensor:", unique_tensor)
print("idx:", idx)

origin_a = tf.gather(unique_tensor, idx)
print("origin_a:", origin_a)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值