tensorflow2 基本数据操作

持续更新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])

张量排序

通过设置参数 directionDESCENDING 则为降序排列 默认为升序排列

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)>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值