tensorflow 關鍵問題辨析

2022-05-20 15:27:21 字數 1572 閱讀 2209

tensorflow中name_scope和variable scope的理解

之所以會出現這兩種型別的scope,主要是後者(variable scope)為了實現tensorflow中的變數共享機制:即為了使得在**的任何部分可以使用某乙個已經建立的變數,tf引入了變數共享機制,使得可以輕鬆的共享變數,而不用傳乙個變數的引用。具體解釋如下:

tf.name_scope() 並不會對 tf.get_variable() 建立的變數有任何影響。

tf.name_scope() 主要是用來管理命名空間的,這樣子讓我們的整個模型更加有條理。而 tf.variable_scope() 的作用是為了實現變數共享,它和 tf.get_variable() 來完成變數共享的功能。

根據名稱查詢變數

在建立變數時,即使我們不指定變數名稱,程式也會自動進行命名。於是,我們可以很方便的根據名稱來查詢變數,這在抓取引數、finetune模型等很多時候都很有用。

1:通過在tf.global_variables()變數列表中,根據變數名進行匹配搜尋查詢。 該種搜尋方式,可以同時找到由tf.variable或者tf.get_variable建立的變數。

import tensorflow as tf

x = tf.variable(1,name='x')

y = tf.get_variable(name='y',shape=[1,2])

for var in tf.global_variables():

if var.name == 'x:0':

print(var)

2:利用get_tensor_by_name()同樣可以獲得由tf.variable或者tf.get_variable建立的變數。

需要注意的是,此時獲得的是tensor, 而不是variable,因此 x不等於x1.

import tensorflow as tf

x = tf.variable(1,name='x')

y = tf.get_variable(name='y',shape=[1,2])

graph = tf.get_default_graph()

x1 = graph.get_tensor_by_name("x:0")

y1 = graph.get_tensor_by_name("y:0")

3:針對tf.get_variable建立的變數,可以利用變數重用來直接獲取已經存在的變數。

with tf.variable_scope("foo"):

bar1 = tf.get_variable("bar", (2,3)) # create

with tf.variable_scope("foo", reuse=true):

bar2 = tf.get_variable("bar") # reuse

with tf.variable_scope("", reuse=true): # root variable scope

bar3 = tf.get_variable("foo/bar") # reuse (equivalent to the above)

print((bar1 is bar2) and (bar2 is bar3))

tensorflow 關鍵問題辨析2

outputs和state有什麼關係?結論上來說,如果cell為lstm,那 state是個tuple,分別代表ct 和 ht,其中 ht與outputs中的對應的最後乙個時刻的輸出相等,假設state形狀為 2,batch size,cell.output size outputs形狀為 batc...

SaaS 運營關鍵問題

1。強大的硬體投入。保障24小時不間斷使用者資料訪問 amazon一年故障控制在5分鐘 伺服器投資佔硬體很大比重 應用伺服器,資料庫伺服器,身份認證伺服器,儲存備份伺服器等 2。穩定性 a。saas應作為乙個運營軟體,這就要求使用者任意輸入資料都不會導致系統錯誤,否則海量使用者會造成巨大損失。如,輸...

docker 幾個關鍵問題

1.容器和映象的區別 映象 image 和容器 container 的關係,就像是物件導向程式設計中的類和例項一樣,映象是靜態的定義,容器是映象執行時的實體。容器可以被建立 啟動 停止 刪除 暫停等 2.映象和倉庫的概念 4.registry repository tag images docker...