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

【算子功能描述】node

tf.math.abs算子的做用是計算輸入數據的絕對值 y = |x|python

【案例】c++

# -*- 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)

輸入數據以下:dom

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

輸出數據以下:fetch

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

【模型結構】優化

能夠看出該算子的模型結構比較簡單,屬性"T」表示當前處理的數據類型,爲dtype。該屬性值時tf自動推斷出來並填寫的。code

該算子的輸入節點爲name爲「Placeholder」的節點。tf pb模型中,算子的name是惟一的,tf用name做爲算子的id,用做標識算子,graph中的node的邊關係,也是經過name來創建的。orm

 

【算子定義】blog

該算子的定義在 tensorflow/core/ops/math_ops.cc ,具體定義以下:接口

PS: 咱們再作TensorFlow模型優化時,咱們能夠將pb模型反序列化後,創建本身的圖結構,而後將tf模型轉換爲咱們本身的模型。所以。瞭解每個算子的定義比較重要。固然,這須要一個TensorFlow基線版本,存在一樣的python接口,在不一樣的tf版本上,底層實現算子不同的狀況,所以,再作tf模型優化時,咱們須要瞭解tf的c++算子定義。

相關文章
相關標籤/搜索