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 (1)
Oct 31 Python
Python学习之asyncore模块用法实例教程
Sep 29 Python
Python访问纯真IP数据库脚本分享
Jun 29 Python
浅析python协程相关概念
Jan 20 Python
在Django中输出matplotlib生成的图片方法
May 24 Python
使用Python写一个量化股票提醒系统
Aug 22 Python
对pandas中时间窗函数rolling的使用详解
Nov 28 Python
Python面向对象程序设计之类的定义与继承简单示例
Mar 18 Python
Python爬虫运用正则表达式的方法和优缺点
Aug 25 Python
Python利用Scrapy框架爬取豆瓣电影示例
Jan 17 Python
OpenCV灰度化之后图片为绿色的解决
Dec 01 Python
撤回我也能看到!教你用Python制作微信防撤回脚本
Jun 11 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 中的str_replace 函数总结
2007/04/27 PHP
php的ZipArchive类用法实例
2014/10/20 PHP
php获取汉字拼音首字母的方法
2015/10/21 PHP
Laravel框架基于ajax和layer.js实现无刷新删除功能示例
2019/01/17 PHP
PHP的mysqli_ssl_set()函数讲解
2019/01/23 PHP
Laravel基础-关于引入公共文件的两种方式
2019/10/18 PHP
JSQL 批量图片切换的实现代码
2010/05/05 Javascript
基于jquery实现后台左侧菜单点击上下滑动显示
2013/04/11 Javascript
JavaScript中toString()方法的使用详解
2015/06/05 Javascript
JS获取月份最后天数、最大天数与某日周数的方法
2015/12/08 Javascript
Bootstrap每天必学之滚动监听
2016/03/16 Javascript
AngularJS入门教程之表格实例详解
2016/07/27 Javascript
微信小程序 图片等比例缩放(图片自适应屏幕)
2016/11/16 Javascript
js正则表达式验证表单【完整版】
2017/03/06 Javascript
JS实现点击链接切换显示隐藏内容的方法
2017/10/19 Javascript
微信小程序实现星级评分和展示
2018/07/05 Javascript
微信小程序云开发(数据库)详解
2019/05/17 Javascript
javascript实现蒙版与禁止页面滚动
2020/01/11 Javascript
jquery将信息遍历到界面上实例代码
2020/01/21 jQuery
Postman动态获取返回值过程详解
2020/06/30 Javascript
Python实现正整数分解质因数操作示例
2018/08/01 Python
Python Dataframe常见索引方式详解
2020/05/27 Python
python输入中文的实例方法
2020/09/14 Python
浅析HTML5中的 History 模式
2017/06/22 HTML / CSS
关于HTML5+ API plusready的兼容问题
2020/11/20 HTML / CSS
潘多拉珠宝俄罗斯官方网上商店:PANDORA俄罗斯
2020/09/22 全球购物
大学生毕业自我鉴定范文
2014/02/03 职场文书
小班下学期评语
2014/05/04 职场文书
党委班子对照检查材料
2014/08/19 职场文书
综治维稳工作承诺书
2014/08/30 职场文书
信访工作个人总结
2015/03/03 职场文书
2015年保洁员工作总结
2015/05/04 职场文书
2019运动会广播加油稿汇总
2019/08/21 职场文书
python tkinter实现定时关机
2021/04/21 Python
Linux系统下MySQL配置主从分离的步骤
2022/03/21 MySQL
Java 常见的限流算法详细分析并实现
2022/04/07 Java/Android