一、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 数学运算和逻辑运算方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]