【TensorFlow】【算子解析】【tf.math】tf.math.abs

【算子功能描述】

tf.math.abs算子的作用是计算输入数据的绝对值 y = |x|

【案例】

# -*- coding:utf-8 -*-
import tensorflow as tf
import numpy as np

img = np.random.standard_normal(size=(1,3,3)).astype(np.float32)

print(img)

x = tf.placeholder(shape=(1,3,3),dtype=tf.float32)

y = tf.math.abs(x)

with tf.Session() as sess:
    y = sess.run(fetches=y,feed_dict={x:img})
    print(y)
    tf.train.write_graph(graph_or_graph_def=sess.graph,logdir="./",name="./model/tf_math_abs.pb",as_text=True)

输入数据如下:

[[[-1.0353351   1.0076202  -2.4349942 ]
  [ 0.9931925  -0.14527066 -1.4662837 ]
  [ 0.31412837 -3.0430195  -0.3829416 ]]]

输出数据如下:

[[[1.0353351  1.0076202  2.4349942 ]
  [0.9931925  0.14527066 1.4662837 ]
  [0.31412837 3.0430195  0.3829416 ]]]

【模型结构】

68fa6957d642bbbbcb742fc5d19d757c85c.jpg

可以看出该算子的模型结构比较简单,属性"T”表示当前处理的数据类型,为dtype。该属性值时tf自动推断出来并填写的。

该算子的输入节点为name为“Placeholder”的节点。tf pb模型中,算子的name是唯一的,tf用name作为算子的id,用作标识算子,graph中的node的边关系,也是通过name来建立的。

 

【算子定义】

该算子的定义在 tensorflow/core/ops/math_ops.cc ,具体定义如下:

1193b6ad6e78ef09845cadbdb64f7abaf34.jpg

PS: 我们再做TensorFlow模型优化时,我们可以将pb模型反序列化后,建立自己的图结构,然后将tf模型转换为我们自己的模型。因此。了解每一个算子的定义比较重要。当然,这需要一个TensorFlow基线版本,存在同样的python接口,在不同的tf版本上,底层实现算子不一样的情况,因此,再做tf模型优化时,我们需要了解tf的c++算子定义。

转载于:https://my.oschina.net/u/3800567/blog/3098488

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值