最近剛開始接觸tensorflow,第一次嘗試讀取乙個ckpt檔案並繼續訓練乙個訓練到一半的alexnet網路。由於是第一次,讀取的時候瘋狂報錯,等我千辛萬苦(到處搜尋)讀取成果,躍躍欲試的敲下tf.graph.get_tensor_by_name()的時候,我驚訝的發現,之前我架網路時竟然忘了給變數賦name了!!!
在官方文件中尋找無果,於是便在jupyter notebook中操作了一番。
列印乙個變數,得到如下結果:
可以看到,cost變數是乙個tensor,名字是mean:0,這是tensorflow自動分配的名字。
cost的定義如下:
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=pred,labels=y))
不難發現,cost的名字應該是根據tf.reduce_mean()這一函式自動分配的。可見tensor的預設名字由它所執行的最後乙個函式來決定的。
進一步實驗發現,operation型變數的命名規則也有這樣的特性:
那如果有多個呼叫的函式相同的變數呢?
可以看到,如果由多個呼叫相同函式建立的tensor,則在函式名後面加上「_n」;這一規律同樣適用於operation.
tensor命名規則:
> "placeholder:0"
> "placeholder_1:0"
# 統一格式
> "function_last(_n):a"
operation命名規則:
> "adam"
> "adam_1"
# 統一格式
> "function_last(_n)"
argparse和tensorflow命令列引數
1 tensorflow 定義命令列 獲取命令列引數的值 print flag.name 2 定義命令列 import argparse parser argparse.argumentparser description some description 定義乙個 parser 物件 定義引數 p...
TensorFlow建立變數
一 使用tf.variable函式建立變數 tf.variable initial value none,trainable true,collections none,validate shape true,caching device none,name none,variable def no...
tensorflow 共享變數
import tensorflow as tf 設定隨機種子,使得每次隨機初始化都一樣 tf.set random seed 1234 這是我們要共享的變數函式 def share variable input weight tf.get variable weight 2,2 return wei...