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深入学习之对象的属性
Aug 31 Python
python实现的文件夹清理程序分享
Nov 22 Python
Python安装lz4-0.10.1遇到的坑
May 20 Python
python实现决策树ID3算法的示例代码
May 30 Python
实时获取Python的print输出流方法
Jan 07 Python
详解Python中的内建函数,可迭代对象,迭代器
Apr 29 Python
python通过http下载文件的方法详解
Jul 26 Python
Python如何基于selenium实现自动登录博客园
Dec 16 Python
pandas和spark dataframe互相转换实例详解
Feb 18 Python
Python用5行代码实现批量抠图的示例代码
Apr 14 Python
tensorflow模型转ncnn的操作方式
May 25 Python
Python中使用aiohttp模拟服务器出现错误问题及解决方法
Oct 31 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无限级分类方法及代码
2013/06/21 PHP
Yii2框架RESTful API 格式化响应,授权认证和速率限制三部分详解
2016/11/10 PHP
php技巧小结【推荐】
2017/01/19 PHP
event.srcElement+表格应用
2006/08/29 Javascript
一个无限级XML绑定跨框架菜单(For IE)
2007/01/27 Javascript
用javascript实现页面打印的三种方法
2007/03/05 Javascript
jQuery UI Autocomplete 1.8.16 中文输入修正代码
2012/04/16 Javascript
禁用页面部分JavaScript方法的具体实现
2013/07/31 Javascript
javascript自定义startWith()和endWith()的两种方法
2013/11/11 Javascript
原生js结合html5制作简易的双色子游戏
2015/03/30 Javascript
js实现商城星星评分的效果
2015/12/29 Javascript
Bootstrap创建可折叠的组件
2016/02/23 Javascript
JS拉起或下载app的实现代码
2017/02/22 Javascript
微信小程序 五星评价功能的实现
2017/03/09 Javascript
jQueryUI Sortable 应用Demo(分享)
2017/09/07 jQuery
基于vue.js路由参数的实例讲解——简单易懂
2017/09/07 Javascript
angularjs自定义过滤器demo示例
2019/08/24 Javascript
js对象简介与基本用法示例
2020/03/13 Javascript
基于JavaScript实现简单的轮播图
2021/03/03 Javascript
python实现查询苹果手机维修进度
2015/03/16 Python
requests和lxml实现爬虫的方法
2017/06/11 Python
详解Python3中的迭代器和生成器及其区别
2018/10/09 Python
python 处理数字,把大于上限的数字置零实现方法
2019/01/28 Python
Python 安装第三方库 pip install 安装慢安装不上的解决办法
2019/06/18 Python
快速解决docker-py api版本不兼容的问题
2019/08/30 Python
MNIST数据集转化为二维图片的实现示例
2020/01/10 Python
DC Shoes官网:美国滑板鞋和服饰品牌
2017/09/03 全球购物
意大利奢侈品多品牌集合店:TheDoubleF
2019/08/24 全球购物
德国滑雪和户外用品网上商店:XSPO
2019/10/30 全球购物
汽车专业学生自我评价
2014/01/19 职场文书
缓刑人员思想汇报500字
2014/09/12 职场文书
2014教师党员自我评议(5篇)
2014/09/20 职场文书
工作检讨书范文
2015/01/23 职场文书
2019最新版股权转让及委托持股协议书范本
2019/08/07 职场文书
Redisson实现Redis分布式锁的几种方式
2021/08/07 Redis
如何创建一个创建MySQL数据库中的datetime类型
2022/03/21 MySQL