Tensorflow tensor 数学运算和逻辑运算方式


Posted in Python onJune 30, 2020

一、arthmetic 算术操作(+,-,*,/,Mod)

(1)tensor-tensor操作(element-wise)

#两个tensor 运算
#运算规则:element-wise。即c[i,j,..,k]=a[i,j,..,k] op b[i,j,..,k]
ts1=tf.constant(1.0,shape=[2,2])
ts2=tf.Variable(tf.random_normal([2,2]))
sess.run(tf.global_variables_initializer())
#以ts1和ts2为例:
 
#(1)加法+
ts_add1=tf.add(ts1,ts2,name=None)
ts_add2=ts1+ts2    #二者等价
#(2)减法-
ts_sub1=tf.subtract(ts1,ts2,name=None)
ts_sub2=ts1-ts2    #二者等价
#(3)乘法*
ts_mul1=tf.multiply(ts1,ts2,name=None)
ts_mul2=ts1*ts2
#(4)除法/
ts_div1=tf.divide(ts1,ts2,name=None)
ts_div2=tf.div(ts1,ts2,name=None)  #div 支持 broadcasting(即shape可不同)
ts_div3=ts1/ts2
#另外还有truediv(x,y) x,y类型必须一致,floor_div等。
#(5)取模Mod(估计基本用不到)

(2)tensor-scalar操作

#scalar-tensor操作。
#对tensor中所有element执行同样的操作(+,-,*,/)
#加法
ts_add=ts1+2
#减法
ts_sub=ts1-2
#乘法
ts_mul=ts1*2
#除法
ts_div=ts1/2

二、基本数学函数

#以下x,y均代表tensor
 
tf.add_n(inputs, name=None) #inputs:tensor数组,所有tensor相加
tf.abs(x, name=None)     #绝对值
tf.negative(x, name=None)  #取反
tf.sign(x, name=None)    #取符号(y = sign(x) = -1 if x < 0; 0 if x == 0; 1 if x > 0.)
tf.square(x, name=None)   #y=x*x
tf.round(x, name=None)    #Rounds the values of a tensor to the nearest integer, element-wise.
tf.sqrt(x, name=None)    #sqrt 
tf.pow(x, y, name=None)   #x,y均为tensor,element-wise求pow
tf.exp(x, name=None)     #y=e^x
tf.log(x, name=None)     #y=log(x) 
tf.ceil(x, name=None)    #ceil
tf.floor(x, name=None)    #floor
tf.maximum(x, y, name=None) #z=max(x,y)
tf.minimum(x, y, name=None)
tf.cos(x, name=None)     #三角函数,sin,cos,tan,acos,asin,atan
tf.sin(x, name=None) 
tf.tan(x, name=None)
tf.acos(x, name=None)
tf.asin(x, name=None)
tf.atan(x, name=None)
#...
#等等一些函数。

三、Matrix矩阵操作

tf.diag(diagonal, name=None)     #得到以diagonal为对角的tensor
tf.diag_part(input, name=None)    #tf.diag 逆操作,得到input的对角矩阵 
tf.transpose(a, perm=None,name=None) #转置矩阵,y[i,j]=x[j,i]
#矩阵乘法
tf.matmul(a, b, 
 transpose_a=False, transpose_b=False, #
 adjoint_a=False, adjoint_b=False,   #共轭
 a_is_sparse=False, b_is_sparse=False, #矩阵是否稀疏
 name=None)

四、Reduction 归约操作

#(1)tf.reduce_sum 
#当keep_dims=False。rank of tensor会降维度。
tf.reduce_sum(input_tensor, 
  axis=None,        #要归约的dimention。值为None或一个数字或者数组。如0,1,[0,3,4]
  keep_dims=False,     #if true, retains reduced dimensions with length 1.
  name=None, 
  reduction_indices=None)
 
#(2)tf.reduce_min / tf.reduce_max / tf.reduce_mean
#参数与tf.reduce_sum一致。
#tf.reduce_min : 被归约的数取最小值;
#tf.reduce_max : 被归约的数取最大值;
#tf.reduce_mean: 被归约的数取平均值。
 
#(3)逻辑操作
# tf.reduce_all:logical and operation
# tf.reduce_any: logical or operation
 
 
#(4)自定义操作函数
tf.einsum(equation, *inputs)
#例子:
tf.einsum('ij,jk->ik', ts1,ts2) #矩阵乘法
tf.einsum('ij->ji',ts1)     #矩阵转置

五、tensor大小 比较

#(1)相等equal (element-wise)
tf.equal(x, y, name=None) #Returns the truth value of (x == y) element-wise.
 
#(2)不等not_equal 
tf.not_equal(x, y, name=None)
 
#(3)其他比较
tf.less(x, y, name=None)
tf.less_equal(x, y, name=None)
tf.greater(x, y, name=None)
tf.greater_equal(x, y, name=None)

六、恒等映射

#恒等映射

tf.identity(input, name=None) #Return a tensor with the same shape and contents as the input tensor or value.

七、类型转化

tf.cast(x, dtype, name=None)
#Casts a tensor to a new type.
 
#For example:
# tensor `a` is [1.8, 2.2], dtype=tf.float
#tf.cast(a, tf.int32) ==> [1, 2] dtype=tf.int32

八、例子

(1)RELU实现

import tensorflow as tf
def relu(x):    #要构造一个和x shape一样的Tensor。源码中应该不会用效率这么低的写法。
 y=tf.constant(0.0,shape=x.get_shape())
 return tf.where(tf.greater(x,y),x,y)
 
sess=tf.Session()
x=tf.Variable(tf.random_normal(shape=[10],stddev=10))
sess.run(tf.global_variables_initializer())
x_relu=relu(x)
data_x,data_x_relu=sess.run((x,x_relu))
for i in range(0,len(data_x)): 
 print("%.5f --relu--> %.5f" %(data_x[i],data_x_relu[i]))

补充知识:tensorflow 复合逻辑‘且'和‘或'的实现

我就废话不多说了,大家还是直接看代码吧~

import tensorflow as tf

n1 = tf.constant(2)
n2 = tf.constant(3)

n3 = tf.constant(4)
n4 = tf.constant(5)

def true_fn1():
 return tf.constant(11)

def false_fn1():
 return tf.constant(22)

def true_fn():
  return tf.cond(n3<n4,true_fn1,false_fn1)

def false_fn():
  return tf.constant(33)

r = tf.cond(n1<n2,true_fn,false_fn)

sess = tf.Session()

print(sess.run(r))

print结果11

相当于实现了if n1<n2 and n3<n4:

后来发现,用 & 和 | 就行了

import tensorflow as tf

n1 = tf.constant(True,tf.bool)
n2 = tf.constant(False,tf.bool)

r1 = n1 | n2
r2 = n1 & n2

sess = tf.Session()

print(sess.run(r1))
print(sess.run(r2))
import tensorflow as tf

n1 = tf.constant(1)>tf.constant(0)
n2 = tf.constant(1)<tf.constant(0)

r1 = n1 | n2
r2 = n1 & n2

sess = tf.Session()

print(sess.run(r1))
print(sess.run(r2))

以上这篇Tensorflow tensor 数学运算和逻辑运算方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python通过自定义isnumber函数判断字符串是否为数字的方法
Apr 23 Python
Python中List.count()方法的使用教程
May 20 Python
利用python批量修改word文件名的方法示例
Oct 17 Python
python判断设备是否联网的方法
Jun 29 Python
python将list转为matrix的方法
Dec 12 Python
PyQt5笔记之弹出窗口大全
Jun 20 Python
python爬虫 正则表达式解析
Sep 28 Python
15行Python代码实现免费发送手机短信推送消息功能
Feb 27 Python
Python Scrapy多页数据爬取实现过程解析
Jun 12 Python
如何利用python之wxpy模块玩转微信
Aug 17 Python
如何使用Pytorch搭建模型
Oct 26 Python
Python获取江苏疫情实时数据及爬虫分析
Aug 02 Python
Python requests模块安装及使用教程图解
Jun 30 #Python
在Tensorflow中实现leakyRelu操作详解(高效)
Jun 30 #Python
TensorFlow-gpu和opencv安装详细教程
Jun 30 #Python
tensorflow 2.1.0 安装与实战教程(CASIA FACE v5)
Jun 30 #Python
python 最简单的实现适配器设计模式的示例
Jun 30 #Python
Tensorflow--取tensorf指定列的操作方式
Jun 30 #Python
解决TensorFlow程序无限制占用GPU的方法
Jun 30 #Python
You might like
PHP中使用CURL获取页面title例子
2015/01/07 PHP
php对关联数组循环遍历的实现方法
2015/03/13 PHP
PHP入门教程之操作符与控制结构流程详解
2016/09/09 PHP
Laravel重写用户登录简单示例
2016/10/08 PHP
浅谈php调用python文件
2019/03/29 PHP
(仅IE下有效)关于checkbox 三态
2007/05/12 Javascript
jquery 双色表格实现代码
2009/12/08 Javascript
JS 有名函数表达式全面解析
2010/03/19 Javascript
js实现弹窗插件功能实例代码分享
2013/12/12 Javascript
Javascript 完美运动框架(逐行分析代码,让你轻松了运动的原理)
2015/01/23 Javascript
JavaScript对象数组排序函数及六个用法
2015/12/23 Javascript
深入学习jQuery Validate表单验证(二)
2016/01/18 Javascript
详解vue事件对象、冒泡、阻止默认行为
2017/03/20 Javascript
HTML5+Canvas调用手机拍照功能实现图片上传(上)
2017/04/21 Javascript
vue 挂载路由到头部导航的方法
2017/11/13 Javascript
vue-router重定向不刷新问题的解决
2018/06/25 Javascript
详解Vue的钩子函数(路由导航守卫、keep-alive、生命周期钩子)
2018/07/24 Javascript
浅谈针对Vue相同路由不同参数的刷新问题
2018/09/29 Javascript
vue-router判断页面未登录自动跳转到登录页的方法示例
2018/11/04 Javascript
angular4+百分比进度显示插件用法示例
2019/05/05 Javascript
vue下canvas裁剪图片实例讲解
2020/04/16 Javascript
Python写的Discuz7.2版faq.php注入漏洞工具
2014/08/06 Python
Python文件与文件夹常见基本操作总结
2016/09/19 Python
Python对ElasticSearch获取数据及操作
2019/04/24 Python
Python中函数的基本定义与调用及内置函数详解
2019/05/13 Python
Numpy中对向量、矩阵的使用详解
2019/10/29 Python
Jupyter notebook无法导入第三方模块的解决方式
2020/04/15 Python
Python通过kerberos安全认证操作kafka方式
2020/06/06 Python
opencv+pyQt5实现图片阈值编辑器/寻色块阈值利器
2020/11/13 Python
Bath & Body Works阿联酋:在线购买沐浴和身体用品
2021/02/27 全球购物
给校长的建议书400字
2014/05/15 职场文书
纪录片信仰观后感
2015/06/08 职场文书
辩论会主持词
2015/07/03 职场文书
初中历史教学反思
2016/02/19 职场文书
导游词之吉林吉塔
2019/11/11 职场文书
Windows下使用Nginx+Tomcat做负载均衡的完整步骤
2021/03/31 Servers