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删除nginx缓存文件示例(python文件操作)
Mar 26 Python
Python中的面向对象编程详解(下)
Apr 13 Python
Python处理文本文件中控制字符的方法
Feb 07 Python
python命令行解析之parse_known_args()函数和parse_args()使用区别介绍
Jan 24 Python
python 列表,数组,矩阵两两转换tolist()的实例
Apr 04 Python
python通过ffmgep从视频中抽帧的方法
Dec 05 Python
python开发准备工作之配置虚拟环境(非常重要)
Feb 11 Python
keras模型可视化,层可视化及kernel可视化实例
Jan 24 Python
如何在django中添加日志功能
Feb 06 Python
PyCharm刷新项目(文件)目录的实现
Feb 14 Python
python适合做数据挖掘吗
Jun 16 Python
用Python进行websocket接口测试
Oct 16 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中运用jQuery的Ajax跨域调用实现代码
2012/02/21 PHP
php笔记之:php函数range() round()和list()的使用说明
2013/04/26 PHP
解析PHP可变函数的经典用法
2013/06/20 PHP
使用PHP连接多种数据库的实现代码(mysql,access,sqlserver,Oracle)
2016/12/21 PHP
浅析PHP7的多进程及实例源码
2019/04/14 PHP
PHP使用Redis实现Session共享的实现示例
2019/05/12 PHP
比较全的JS checkbox全选、取消全选、删除功能代码
2008/12/19 Javascript
由Javascript实现的页面日历
2011/11/04 Javascript
js实现网站首页图片滚动显示
2013/02/04 Javascript
jQuery Ajax使用实例
2015/04/16 Javascript
浅谈Javascript的静态属性和原型属性
2015/05/07 Javascript
JS基于面向对象实现的拖拽库实例
2015/09/24 Javascript
轻松掌握JavaScript代理模式
2016/08/26 Javascript
微信小程序 上传头像的实例详解
2017/10/27 Javascript
解决Vue 浏览器后退无法触发beforeRouteLeave的问题
2017/12/24 Javascript
angularjs 的数据绑定实现原理
2018/07/02 Javascript
JavaScript实现shuffle数组洗牌操作示例
2019/01/03 Javascript
通过JS深度判断两个对象字段相同
2019/06/14 Javascript
详解element-ui中表单验证的三种方式
2019/09/18 Javascript
bootstrap实现嵌套模态框的实例代码
2020/01/10 Javascript
javascript 设计模式之组合模式原理与应用详解
2020/04/08 Javascript
解决vuex数据页面刷新后初始化操作
2020/07/26 Javascript
Angular处理未可知异常错误的方法详解
2021/01/17 Javascript
Python获取文件ssdeep值的方法
2014/10/05 Python
深入解析Python中的urllib2模块
2015/11/13 Python
使用apidocJs快速生成在线文档的实例讲解
2018/02/07 Python
详解django中使用定时任务的方法
2018/09/27 Python
[原创]Python入门教程4. 元组基本操作
2018/10/31 Python
用Anaconda安装本地python包的方法及路径问题(图文)
2019/07/16 Python
Django-Model数据库操作(增删改查、连表结构)详解
2019/07/17 Python
python 实现识别图片上的数字
2019/07/30 Python
使用python-Jenkins批量创建及修改jobs操作
2020/05/12 Python
Tretorn美国官网:瑞典外套和鞋类品牌,抵御风雨
2018/07/19 全球购物
安全生产年活动总结
2014/08/29 职场文书
个人对照检查材料思想汇报
2014/09/26 职场文书
范文之农村基层党建工作报告
2019/10/24 职场文书