[TensorFlow系列-10]:TensorFlow基础 - 张量元素的比较运算
Posted 文火冰糖的硅基工坊
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[TensorFlow系列-10]:TensorFlow基础 - 张量元素的比较运算相关的知识,希望对你有一定的参考价值。
作者主页(文火冰糖的硅基工坊):https://blog.csdn.net/HiWangWenBing
本文网址:https://blog.csdn.net/HiWangWenBing/article/details/119641199
目录
1.4 Tensor的广播机制: 不同维度的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.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
以上是关于[TensorFlow系列-10]:TensorFlow基础 - 张量元素的比较运算的主要内容,如果未能解决你的问题,请参考以下文章
使用亚马逊的云服务器EC2做深度学习配置TensorFlow