Tensorflow提供了大量的张量运算,基本上可以对标Numpy多维数组的运算,以支持对张量的各种复杂的运算。
这些操作运算中大多是对数组中每个元素执行相同的函数运算,并获得每个元素函数运算的结果序列,这些序列生成一个新的同维度的数组。
https://tensorflow.google.cn/api_docs/python/tf
1.2 运算分类
1)算术运算:加、减、系数乘、系数除
2)函数运算:sin,cos
3)取整运算:上取整、下取整
4)统计运算:最大值、最小值、均值
5)比较运算:大于,等于,小于
6)线性代数运算:矩阵、点乘、叉乘
登录后复制
#环境准备
import numpy as np
import tensorflow as tf
print("hello world")
print("tensorflow version:", tf.__version__)
1)概述
2)与常规值的比较
备注:
3)与非常规值的比较
is_finite:是否为有界限的数值,
is_inf:是否为无界限的数值或无穷值
is_nan:检测张量元素是否为nan(空数据),返回true or flase;
is_normal:检测张量元素是否为有效数据。Tensorflow不支持
常规值的比较,不同运算符的比较方法比较类似,这里选出几个进行示意。
登录后复制
# 代码示例
# 比较两个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)
登录后复制
#代码示例:
# 比较两个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)
方法同上。
方法同上。
方法同上。
方法同上。
登录后复制
#代码示例
# 比较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)
备注:
登录后复制
# 代码示例
# 比较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)
备注:
登录后复制
#代码示例
# 比较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)
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删