[TensorFlow系列-10]:TensorFlow基础 - 张量元素的比较运算

 作者主页(文火冰糖的硅基工坊):https://blog.csdn.net/HiWangWenBing

本文网址:https://blog.csdn.net/HiWangWenBing/article/details/119641199


目录

第1章 Tensor运算概述

1.1 概述

1.3  “in place“运算 : 不支持

1.4 Tensor的广播机制: 不同维度的tensor实例运算

1.5 环境准备

1.6 比较运算概述

第2章 常规值的比较示例

2.1 比较两个tensor是否完全相同:不支持

2.2 比较两个tensor的每个元素是否相等关系:tf.math.equal(x,y)

2.3 比较两个tensor的每个元素是否为大小关系:tf.math.greater(x,y)

2.4 比较两个tensor的每个元素是否为大小关系:tf.math.greater_equal(x,y)

2.5 比较两个tensor的每个元素是否为大小关系:tf.math.less(x,y)

2.6 比较两个tensor的每个元素是否为大小关系:tf.math.less_equal(x,y)

2.7 比较两个tensor的每个元素是否为大小关系:tf.math.not_equal(x,y)

第3章 非常规值(is_xxx)的比较示例

3.1 是否为有界限的数值: tf.math.is_finite(x)

3.2 是否为无界限的数值或无穷值:tf.math.is_inf(x)

3.3 检测张量元素是否为NAN(空数据):tf.math.is_nas(x)



第1章 Tensor运算概述

1.1 概述

Tensorflow提供了大量的张量运算,基本上可以对标Numpy多维数组的运算,以支持对张量的各种复杂的运算。

这些操作运算中大多是对数组中每个元素执行相同的函数运算,并获得每个元素函数运算的结果序列,这些序列生成一个新的同维度的数组。

https://tensorflow.google.cn/api_docs/python/tf

1.2 运算分类

(1)算术运算:加、减、系数乘、系数除

(2)函数运算:sin,cos

(3)取整运算:上取整、下取整

(4)统计运算:最大值、最小值、均值

(5)比较运算:大于,等于,小于

(6)线性代数运算:矩阵、点乘、叉乘

1.3  “in place“运算 : 不支持

1.4 Tensor的广播机制: 不同维度的tensor实例运算

1.5 环境准备

#环境准备
import numpy as np
import tensorflow as tf
print("hello world")
print("tensorflow version:", tf.__version__)

1.6 比较运算概述

(1)概述

  • 张量比较是指张量的每个元素的的比较
  • 比较的对象,可以是两个张量之间的对应元素的比较
  • 比较的对象,可以是一个张量中的所有元素与0、指定元素、无效值NA或无穷值进行比较
  • 比较的结果是只包含true和false的张量。

(2)与常规值的比较

å¨è¿éæå¥å¾çæè¿°

 备注:

  • other是比较对象,可以是张量,可以是数字,默认是0
  • 比较的结果是只包含true和false的张量。

(3)与非常规值的比较

is_finite:是否为有界限的数值,

is_inf:是否为无界限的数值或无穷值

  • 正数/0 =》正无穷,用inf表示
  • 附属/0 =》 负无穷,用-inf表示

is_nan:检测张量元素是否为nan(空数据),返回true or flase;

  • 无效数据
  • 非数字数据,
  • 0/0
  • 读取外部数据时,无输入数据

is_normal:检测张量元素是否为有效数据。Tensorflow不支持

第2章 常规值的比较示例

常规值的比较,不同运算符的比较方法比较类似,这里选出几个进行示意。

2.1 比较两个tensor是否完全相同:不支持

2.2 比较两个tensor的每个元素是否相等关系:tf.math.equal(x,y)

# 代码示例

# 比较两个tensro之间的每个元素
a = tf.constant([[1,2,3],[4,5,6]])  
print ("原数据a:")
print (a)


b = tf.constant([[1,2,3],[4,5,6]])  
print ("原数据b:")
print (a)


c = tf.constant([[0,2,3],[0,5,6]])  
print ("原数据c:")
print (a)

print ("\n比较a与b:")
print(tf.equal(a,b))    
print(tf.math.equal(a,b))    

print ("\n比较a与c:")
print(tf.equal(a,c))
print(tf.math.equal(a,c))   
输出:

原数据a:
tf.Tensor(
[[1 2 3]
 [4 5 6]], shape=(2, 3), dtype=int32)
原数据b:
tf.Tensor(
[[1 2 3]
 [4 5 6]], shape=(2, 3), dtype=int32)
原数据c:
tf.Tensor(
[[1 2 3]
 [4 5 6]], shape=(2, 3), dtype=int32)

比较a与b:
tf.Tensor(
[[ True  True  True]
 [ True  True  True]], shape=(2, 3), dtype=bool)
tf.Tensor(
[[ True  True  True]
 [ True  True  True]], shape=(2, 3), dtype=bool)

比较a与c:
tf.Tensor(
[[False  True  True]
 [False  True  True]], shape=(2, 3), dtype=bool)
tf.Tensor(
[[False  True  True]
 [False  True  True]], shape=(2, 3), dtype=bool)

2.3 比较两个tensor的每个元素是否为大小关系:tf.math.greater(x,y)

#代码示例:

# 比较两个tensor之间的每个元素
a = tf.constant([[1,2,3],[4,5,6]])  
print ("原数据a:")
print (a)


b = tf.constant([[1,2,3],[4,5,6]])  
print ("原数据b:")
print (a)


c = tf.constant([[0,2,3],[0,5,6]])  
print ("原数据c:")
print (a)

print ("\n比较a与b:")
print(tf.greater(a,b))
print(tf.math.greater(a,b))

print ("\na比较与c:")
print(tf.greater(a,c))
print(tf.math.greater(a,c))
输出:

原数据a:
tf.Tensor(
[[1 2 3]
 [4 5 6]], shape=(2, 3), dtype=int32)
原数据b:
tf.Tensor(
[[1 2 3]
 [4 5 6]], shape=(2, 3), dtype=int32)
原数据c:
tf.Tensor(
[[1 2 3]
 [4 5 6]], shape=(2, 3), dtype=int32)

比较a与b:
tf.Tensor(
[[False False False]
 [False False False]], shape=(2, 3), dtype=bool)
tf.Tensor(
[[False False False]
 [False False False]], shape=(2, 3), dtype=bool)

a比较与c:
tf.Tensor(
[[ True False False]
 [ True False False]], shape=(2, 3), dtype=bool)
tf.Tensor(
[[ True False False]
 [ True False False]], shape=(2, 3), dtype=bool)

2.4 比较两个tensor的每个元素是否为大小关系:tf.math.greater_equal(x,y)

方法同上。

2.5 比较两个tensor的每个元素是否为大小关系:tf.math.less(x,y)

方法同上。

2.6 比较两个tensor的每个元素是否为大小关系:tf.math.less_equal(x,y)

方法同上。

2.7 比较两个tensor的每个元素是否为大小关系:tf.math.not_equal(x,y)

方法同上。

第3章 非常规值(is_xxx)的比较示例

3.1 是否为有界限的数值: tf.math.is_finite(x)

#代码示例

# 比较tensor的每个元素是否为无穷数据
a = tf.constant([0.,1.,2.,3.,4.,5.,6.,7.,8.,9])  
print ("原数据a:")
print (a)

print ("原数据b:")
b = a/0
print(b)

print ("原数据b:")
c = -a/0
print(c)

print("比较结果")
print(tf.math.is_finite(a))
print(tf.math.is_finite(b))
print(tf.math.is_finite(c))
输出:

原数据a:
tf.Tensor([0. 1. 2. 3. 4. 5. 6. 7. 8. 9.], shape=(10,), dtype=float32)
原数据b:
tf.Tensor([nan inf inf inf inf inf inf inf inf inf], shape=(10,), dtype=float32)
原数据b:
tf.Tensor([ nan -inf -inf -inf -inf -inf -inf -inf -inf -inf], shape=(10,), dtype=float32)

比较结果
tf.Tensor([ True  True  True  True  True  True  True  True  True  True], shape=(10,), dtype=bool)
tf.Tensor([False False False False False False False False False False], shape=(10,), dtype=bool)
tf.Tensor([False False False False False False False False False False], shape=(10,), dtype=bool)

备注:

  • 0/0为nan数据
  • inf为正无穷
  • -inf为负无穷
  • nan不是正无穷,也不是负无穷

3.2 是否为无界限的数值或无穷值:tf.math.is_inf(x)

# 代码示例

# 比较tensor的每个元素是否为有限数据
a = tf.constant([0.,1.,2.,3.,4.,5.,6.,7.,8.,9.])  
print ("原数据a:")
print (a)

print ("原数据b:")
b = a/0
print(b)

print ("原数据c:")
c = -a/0
print(c)

print("\n比较结果")
print(tf.math.is_inf(a))
print(tf.math.is_inf(b))
print(tf.math.is_inf(c))

输出:

输出:

原数据a:
tf.Tensor([0. 1. 2. 3. 4. 5. 6. 7. 8. 9.], shape=(10,), dtype=float32)
原数据b:
tf.Tensor([nan inf inf inf inf inf inf inf inf inf], shape=(10,), dtype=float32)
原数据c:
tf.Tensor([ nan -inf -inf -inf -inf -inf -inf -inf -inf -inf], shape=(10,), dtype=float32)

比较结果
tf.Tensor([False False False False False False False False False False], shape=(10,), dtype=bool)
tf.Tensor([False  True  True  True  True  True  True  True  True  True], shape=(10,), dtype=bool)
tf.Tensor([False  True  True  True  True  True  True  True  True  True], shape=(10,), dtype=bool)

备注:

  • nas既不是有限数据,也不是无限数据。

3.3 检测张量元素是否为NAN(空数据):tf.math.is_nas(x)

#代码示例

#  比较tensor的每个元素是否为NAN
a = tf.constant([0.,1.,2.,3.,4.,5.,6.,7.,8.,9.])  
print ("原数据a:")
print (a)

print ("原数据b:")
b = a/0
print(b)

print ("原数据b:")
c = -a/0
print(c)

print("\n比较结果")
print(tf.math.is_nan(a))
print(tf.math.is_nan(b))
print(tf.math.is_nan(c))

输出:

原数据a:
tf.Tensor([0. 1. 2. 3. 4. 5. 6. 7. 8. 9.], shape=(10,), dtype=float32)
原数据b:
tf.Tensor([nan inf inf inf inf inf inf inf inf inf], shape=(10,), dtype=float32)
原数据b:
tf.Tensor([ nan -inf -inf -inf -inf -inf -inf -inf -inf -inf], shape=(10,), dtype=float32)

比较结果
tf.Tensor([False False False False False False False False False False], shape=(10,), dtype=bool)
tf.Tensor([ True False False False False False False False False False], shape=(10,), dtype=bool)
tf.Tensor([ True False False False False False False False False False], shape=(10,), dtype=bool)

作者主页(文火冰糖的硅基工坊):https://blog.csdn.net/HiWangWenBing

本文网址:https://blog.csdn.net/HiWangWenBing/article/details/119641199

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

文火冰糖的硅基工坊

你的鼓励是我前进的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值