1. 程式人生 > >Tensorflow使用技巧:通過graph.as_graph_def探索函式內部機制

Tensorflow使用技巧:通過graph.as_graph_def探索函式內部機制

Tensorflow有tf.Graph類,用於儲存計算圖。而計算圖其實就是由節點和有向邊組成,每個點包括操作Op、數值value、型別dtype、形狀shape等屬性。探索諸如tf.Variable()等函式的內部機制的過程中,就需要檢視計算圖的變化情況,包括新建了哪些節點,輸入是什麼等等。

例如想要探討tf.constant函式的內部機制,則執行以下程式碼:

import tensorflow as tf

a = tf.constant(1)
print(tf.get_default_graph().as_graph_def())

返回

node {
  name: "Const"
op: "Const" attr { key: "dtype" value { type: DT_INT32
} } attr { key: "value" value { tensor { dtype: DT_INT32 tensor_shape { } int_val: 1 } } } } versions { producer: 22 }

就可以判斷tf.constant函式其實仍然是有Operation的,為const,而值是用屬性attr儲存的。

進一步探討tf.Variable機制,則同樣執行以下程式碼:

import tensorflow as tf

a = tf.constant(1)
b = tf.Variable(a)
print(tf.get_default_graph().as_graph_def())

返回如下結果:

node {
  name: "ones"
  op: "Const"
  attr {
    key: "dtype"
    value {
      type: DT_FLOAT
    }
  }
  attr {
    key: "value"
    value {
      tensor {
        dtype: DT_FLOAT
        tensor_shape {
          dim {
            size: 1
} } float_val: 1.0 } } } } node { name: "Variable" op: "VariableV2" attr { key: "container" value { s: "" } } attr { key: "dtype" value { type: DT_FLOAT } } attr { key: "shape" value { shape { dim { size: 1 } } } } attr { key: "shared_name" value { s: "" } } } node { name: "Variable/Assign" op: "Assign" input: "Variable" input: "ones" attr { key: "T" value { type: DT_FLOAT } } attr { key: "_class" value { list { s: "loc:@Variable" } } } attr { key: "use_locking" value { b: true } } attr { key: "validate_shape" value { b: true } } } node { name: "Variable/read" op: "Identity" input: "Variable" attr { key: "T" value { type: DT_FLOAT } } attr { key: "_class" value { list { s: "loc:@Variable" } } } } versions { producer: 22 }

發現雖然只是運行了一行程式碼,但是實際上添加了三個節點,分別是Variable、Variable/read和Variable/Assign,從字面理解可以猜測分別是作為儲存器、讀取介面和賦值介面。而這個assign的存在就是區分Variable和Tensor的重要標誌(Variable是mutable的)。

相關推薦

Tensorflow使用技巧通過graph.as_graph_def探索函式內部機制

Tensorflow有tf.Graph類,用於儲存計算圖。而計算圖其實就是由節點和有向邊組成,每個點包括操作Op、數值value、型別dtype、形狀shape等屬性。探索諸如tf.Variable()等函式的內部機制的過程中,就需要檢視計算圖的變化情況,包括新

前端tensorflow通過機器學習推導函式方程式--鉑金Ⅲ

什麼是tensorflow.js tensorflow.js是一個能執行在瀏覽器和nodejs的一個機器學習、機器訓練的javascript庫,眾所周知在瀏覽器上用javascript進行計算是很慢的,而tensorflow.js會基於WebGL通過gpu進行計算加速來對高效能的機器學習模組進行加速運算,從

PyCharm使用技巧通過DockerCompose配置遠端直譯器

通過DockerCompose配置遠端直譯器 注: 1.此功能僅在專業版中支援。此版本是商業版,它提供了一套出色的工具和功能。 2.以下內容僅在安裝並啟用Docker整合和Python Docker外掛時有效! 先決條件 確保滿足以下先決條件: Docke

自動化測試實戰技巧「用例失敗重試機制」實現方案分享

![](https://tva1.sinaimg.cn/large/007S8ZIlgy1gfyokxzffsj30x80j0n63.jpg) # 1. 背景說明 在開展自動化測試工作時,經常會由於一些外在原因(如網路中斷、返回超時)導致自動化測試用例執行失敗,而這些失敗並不是用例本身驗證或被測程式存

TensorFlow 訓練多個loss函式技巧 訓練步驟,凍結部分層(freeze some scopes),從tensorboard檢查問題

這兩天使用TensorFlow訓練一個多個損失函式的網路模型,自己搭建網路,調參訓練,由於網路是一個兩階段的網路,具有三個損失函式,其中兩個損失函式監督第一個階段,一個損失函式家督第二個階段,而且損失函式監督的並不全是最後一層,還有中間層,這需要調整我的訓練方式。 訓練方式

tensorbosrd出現No graph definition files were found,補充內容 以下內容轉載自https://blog.csdn.net/u014165082/article/details/79556366 tensorflow入門新版本語法改動以及tensorbo

tensorbosrd出現No graph definition files were found,補充內容 在writer=tf.summary.FileWriter('./my_graph',sess.graph) 一句中, ./my_graph的絕對路徑不允許出現漢語,否則就會出現No

Kears 使用通過回撥函式儲存最佳準確率下的模型

1:首先,我給我的MixTest資料夾裡面分好了類的圖片進行重新命名(因為分類的時候沒有注意導致命名有點不好) def load_data(path): Rename the picture [a tool] for eachone in os.listdir(path):

TensorFlow筆記啟用函式

tf.nn.sigmid()函式 函式表示式 f(x)=11+e−x f(x) = \frac{1}{1 + e^{-x}} f(x)=1+e−x1​ 函式影象 函式性質 對其求導可得到 f′(x)=

VBA-API通過BEEP函式(揚聲器)播方音樂

Private Declare Function Beep Lib "kernel32" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long '響鈴API函式宣告 Private Const K = 0 '空拍

tensorflow實戰MNIST手寫數字識別的優化2-代價函式優化,準確率98%

最簡單的tensorflow的手寫識別模型,這一節我們將會介紹其簡單的優化模型。我們會從代價函式,多層感知器,防止過擬合,以及優化器的等幾個方面來介紹優化過程。    1.代價函式的優化:             我們可以這樣將代價函式理解為真實值與預測值的差距,我們神經

C語言通過函式指標和引數來呼叫函式

C語言可以通過函式指標來呼叫函式,可以將要呼叫的函式名儲存到陣列中。這樣我們可以通過引數來直接呼叫函數了。 #include <stdio.h> #define FUNCTIONSIZE 2 typedef unsigned char uint8_t;

tensorflow筆記 常用函式說明

本文章內容比較繁雜,主要是一些比較常用的函式的用法,結合了網上的資料和原始碼,還有我自己寫的示例程式碼。建議照著目錄來看。 1.矩陣操作 1.1矩陣生成 這部分主要將如何生成矩陣,包括全0矩陣,全1矩陣,隨機數矩陣,常數矩陣等 tf.ones | tf.zeros tf.

彙編除錯技巧呼叫C語言函式printf()

除錯程式的痛苦莫過於除錯組合語言了~ 實際上對於一個嵌入式軟體工程師來說,組合語言的除錯跟C語言的除錯如出一轍。當然 ,也有些軟體可以用來模擬,例如real view, DS-5等等,但更為普通的情況是啥都沒有,接下來,本貼將介紹組合語言的列印除錯。 本帖主要內容有: 1.

Form技巧如果在輸入Item之後,可以自動執行GO_BLOCK等內建函式

很多時候,我們想實現這樣子的操作效果: 當向一個特定的Item輸入資料之後,自動觸發一系列的動作,例如GO_BLOCK,然後Loop這個Block,向這個Block維護一定的值(或者檢查值)。這樣子可以很大程度方便User操作(因為是自動操作的)。 但是,眾所周知,如果在W

tensorflow筆記關於softmax函式

當a>b,用softmax函式來計算取a和b的概率,a的softmax值大於b,所以a會經常被取到,而b偶爾會取到。不會想max函式只會取到a。softmax函式定義:假如有一個數組V,Vi是陣列V中的第i個元素,那麼這個元素的Softmax值就是 經過softmax函

Linux下c++呼叫自己編寫的matlab函式通過mcc動態連結庫.so實現

之前在這裡和這裡呼叫了matlab自帶的一些函式,是通過matlab引擎來實現的。那裡呼叫的是matlab自帶的函式,那麼如果想呼叫自己寫的.m函式該怎麼辦呢?其實很簡單,原理類似,方法也不止一種。這篇筆記我先嚐試通過mcc將.m函式編譯成動態連結庫供c++呼叫的方式。在另

linux網路程式設計之socket(十六)通過UNIX域套接字傳遞描述符和 sendmsg/recvmsg 函式

void send_fd(int sock_fd, int send_fd) {     int ret;     struct msghdr msg;     struct cmsghdr *p_cmsg;     struct iovec vec;     char cmsgbuf[CMSG_SPACE(

Linux 技巧讓程序在後臺可靠執行的幾種方法&CentOS 7通過Firewall開放防火牆埠

一.讓程序在後臺可靠執行的幾種方法 方法1 #nohup  【命令】 & 例: [[email protected] ~]# nohup ping www.ibm.com & 方法2 # (【命令】 &) 例:  # (ping www.i

Exchange企業實戰技巧郵件中使用數字簽名和郵件加密功能

clip 節點 模式 chan 打開 ont 發送 菜單欄 電子郵件 SMTP最初是為了在封閉的網絡中傳送相對來說不太重要的簡短郵件,因此SMTP傳輸郵件時,安全性不高。自從安全、多用途INTERNET郵件擴展(S/MIME)成為增強SMTP電子郵件安全功能的標準,使得實現

技巧怎樣以另外的Windows用戶執行SSMS

col run fonts diff jsb 使用 nts avi str 可能會碰到這種問題。你須要在一臺機器上面使用不同的Windows賬戶連接到SQL Server做測試。默認情況下,你須要用不同的Windows賬戶登錄然後測試。實際上不須要每一個windows登