本節主要介紹建立tensorflow圖的相關類或函式
* 核心圖的資料結構(core graph data structures)
tf.graph
操作描述
class tf.graph
tensorflow中的計算以圖資料流的方式表示
乙個圖包含一系列表示計算單元的操作物件
以及在圖中流動的資料單元以tensor物件表現
tf.graph.__init__()
建立乙個空圖
tf.graph.as_default()
乙個將某圖設定為預設圖,並返回乙個上下文管理器
如果不顯式新增乙個預設圖,系統會自動設定乙個全域性的預設圖。
所設定的預設圖,在模組範圍內所定義的節點都將預設加入預設圖中
tf.graph.as_graph_def
(from_version=none, add_shapes=false)
返回乙個圖的序列化的graphdef表示
序列化的graphdef可以匯入至另乙個圖中(使用 import_graph_def())
或者使用c++ session api
tf.graph.finalize()
完成圖的構建,即將其設定為唯讀模式
tf.graph.finalized
返回true,如果圖被完成
tf.graph.control_dependencies(control_inputs)
定義乙個控制依賴,並返回乙個上下文管理器
with g.control_dependencies([a, b, c]):
# `d` 和 `e` 將在 `a`, `b`, 和`c`執行完之後執行.
d = …
e = …
tf.graph.device(device_name_or_function)
定義執行圖所使用的裝置,並返回乙個上下文管理器
with g.device('/gpu:0'): ...
with g.device('/cpu:0'): ...
tf.graph.name_scope(name)
為節點建立層次化的名稱,並返回乙個上下文管理器
tf.graph.add_to_collection(name, value)
將value以name的名稱儲存在收集器(collection)中
tf.graph.get_collection(name, scope=none)
根據name返回乙個收集器中所收集的值的列表
tf.graph.as_graph_element
(obj, allow_tensor=true, allow_operation=true)
返回乙個圖中與obj相關聯的物件,為乙個操作節點或者tensor資料
tf.graph.get_operation_by_name(name)
根據名稱返回操作節點
tf.graph.get_tensor_by_name(name)
根據名稱返回tensor資料
tf.graph.get_operations()
返回圖中的操作節點列表
tf.graph.gradient_override_map(op_type_map)
用於覆蓋梯度函式的上下文管理器
#class tf.graph
#tensorflow執行時需要設定預設的圖
g = tf.graph()
with g.as_default():
# define operations and tensors in `g`.
c = tf.constant(30.0)
assert c.graph is g
##也可以使用tf.get_default_graph()獲得預設圖,也可在基礎上加入節點或子圖
c = tf.constant(4.0)
assert c.graph is tf.get_default_graph()
#tf.graph.as_default
#以下兩段**功能相同
#1、使用graph.as_default():
g = tf.graph()
with g.as_default():
c = tf.constant(5.0)
assert c.graph is g
#2、構造和設定為預設
with tf.graph().as_default() as g:
c = tf.constant(5.0)
assert c.graph is g
#tf.graph.control_dependencies(control_inputs)
# 錯誤**
defmy_func
(pred, tensor):
t = tf.matmul(tensor, tensor)
with tf.control_dependencies([pred]):
# 乘法操作(op)沒有建立在該上下文,所以沒有被加入依賴控制
return t
# 正確**
defmy_func
(pred, tensor):
with tf.control_dependencies([pred]):
# 乘法操作(op)建立在該上下文,所以被加入依賴控制中
#執行完pred之後再執行matmul
return tf.matmul(tensor, tensor)
# tf.graph.name_scope(name)
# 乙個圖中包含有乙個名稱範圍的堆疊,在使用name_scope(...)之後,將壓(push)新名稱進棧中,
#並在下文中使用該名稱
with tf.graph().as_default() as g:
c = tf.constant(5.0, name="c")
assert c.op.name == "c"
c_1 = tf.constant(6.0, name="c")
assert c_1.op.name == "c_1"
# creates a scope called "nested"
with g.name_scope("nested") as scope:
nested_c = tf.constant(10.0, name="c")
assert nested_c.op.name == "nested/c"
# creates a nested scope called "inner".
with g.name_scope("inner"):
nested_inner_c = tf.constant(20.0, name="c")
assert nested_inner_c.op.name == "nested/inner/c"
# create a nested scope called "inner_1".
with g.name_scope("inner"):
nested_inner_1_c = tf.constant(30.0, name="c")
assert nested_inner_1_c.op.name == "nested/inner_1/c"
# treats `scope` as an absolute name scope, and
# switches to the "nested/" scope.
with g.name_scope(scope):
nested_d = tf.constant(40.0, name="d")
assert nested_d.op.name == "nested/d"
with g.name_scope(""):
e = tf.constant(50.0, name="e")
assert e.op.name == "e"
tensorflow中tfrecords使用介紹
這篇文章主要講一下如何用tensorflow中的標準資料讀取方式簡單的實現對自己資料的讀取操作 主要分為以下兩個步驟 1 將自己的資料集轉化為 xx.tfrecords的形式 2 在自己的程式中讀取並使用.tfrecords進行操作 資料集轉換 為了便於講解,我們簡單製作了乙個資料,如下圖所示 程式...
Tensorflow中dynamic rnn的用法
1 api介面dynamic rnn cell,inputs,sequence length none,initial state none,dtype none,parallel iterations none,swap memory false,time major false,scope no...
TensorFlow中遮蔽warning的方法
tensorflow的日誌級別分為以下三種 tf cpp min log level 1 預設設定,為顯示所有資訊 tf cpp min log level 2 只顯示error和warining資訊 tf cpp min log level 3 只顯示error資訊 所以,當tensorflow出...