TensorFlow2.0中Tensor的数据统计

本文深入探讨了张量的统计信息与范数概念,包括1-范数、2-范数、∞-范数的定义及计算方法,以及如何使用TensorFlow进行操作。同时,介绍了张量的最值、均值、和的求解方式,通过实例展示了在不同维度上的计算过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

张量通常较大,直接观察数据很难获得有用信息,通过获取这些张量的统计信息可以较轻松地推测张量数值的分布

张量范数

在神经网络中,范数常用来表示张量的权值大小,梯度大小等

常用范数:

  • 1 −范数,定义为向量 𝒙 的所有元素绝对值之和
    ∣∣x∣∣1=∑i∣xi∣\mid \mid x\mid \mid _1=\sum_i\mid x_i\midx1=ixi
  • 2 −范数,定义为向量𝒙的所有元素的平方和,再开根号
    ∣∣x∣∣2=∑i∣xi∣2\mid \mid x\mid \mid _2=\sqrt{\sum_i\mid x_i\mid^2}x2=ixi2
  • ∞\infty −范数,定义为向量𝒙的所有元素绝对值的最大值
    ∣∣x∣∣∞=maxi(∣xi∣)\mid \mid x\mid \mid _{\infty}=max_i(\mid x_i\mid)x=maxi(xi)

在 TensorFlow 中,可以通过 tf.norm(x, ord)求解张量的 L1、L2、∞\infty等范数

其中参数 ord 指定为 1、2 时计算 L1、L2 范数,指定为 np.inf 时计算∞\infty −范数

举个例子:

>>> import tensorflow as tf
>>> x = tf.ones([2,2])
>>> tf.norm(x,ord=1)	# 计算 L1 范数
<tf.Tensor: id=6, shape=(), dtype=float32, numpy=4.0>
>>> tf.norm(x,ord=2)	# 计算 L2 范数
<tf.Tensor: id=11, shape=(), dtype=float32, numpy=2.0>
>>> import numpy as np
>>> tf.norm(x,ord=np.inf)	# 计算 ∞ 范数
<tf.Tensor: id=15, shape=(), dtype=float32, numpy=1.0>

最值、均值、和

函数意义
tf.reduce_max最大
tf.reduce_min最小
tf.reduce_mean均值
tf.reduce_sum

可以求解张量在某个维度上的最大、最小、均值、和,也可以求全局最大、最小、均值、和

举个例子:

>>> y = tf.random.normal([3, 9])	# 生成数据
>>> tf.reduce_max(y, axis=1)	# 求每行最大值
<tf.Tensor: id=31, shape=(3,), dtype=float32, numpy=array([1.6870528, 1.6314487, 1.2175516], dtype=float32)>

>>> tf.reduce_min(y, axis=1)    # 求每行最小值
<tf.Tensor: id=33, shape=(3,), dtype=float32, numpy=array([-0.76755553, -2.7438164 , -1.4791181 ], dtype=float32)>

>>> tf.reduce_mean(y, axis=1)	# 求每行均值
<tf.Tensor: id=35, shape=(3,), dtype=float32, numpy=array([ 0.38515073, -0.25860643, -0.2165079 ], dtype=float32)>

>>> tf.reduce_sum(y, axis=1)    # 求每行和
<tf.Tensor: id=37, shape=(3,), dtype=float32, numpy=array([ 3.4663565, -2.327458 , -1.9485711], dtype=float32)>

把 y 看作是一个 3 行 9 列的数组,上面得出了每一行数据中的最大值、最小值、均值、和

若不加索引,则是在所有数据中求:

>>> tf.reduce_max(y)	# 全局最大值
<tf.Tensor: id=39, shape=(), dtype=float32, numpy=1.6870528>

>>> tf.reduce_min(y)	# 全局最小值
<tf.Tensor: id=43, shape=(), dtype=float32, numpy=-2.7438164>

>>> tf.reduce_mean(y)	# 全局均值
<tf.Tensor: id=45, shape=(), dtype=float32, numpy=-0.02998786>

>>> tf.reduce_sum(y)	# 全局所有数据的和
<tf.Tensor: id=47, shape=(), dtype=float32, numpy=-0.80967224>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值