tensorflow資料結構-GraphDef
阿新 • • 發佈:2018-11-08
計算圖結構
- MetaGraphDef(計算圖)
- MetaInfoDef(運算方法)
- OpList(運算方法集合)
- OpDef(運算方法)
- ArgDef(輸入,輸出)
- AttrDef(屬性)
- OpDef(運算方法)
- OpList(運算方法集合)
- GraphDef (連線結構)
- NodeDef(節點)
- SaverDef (模型持久化)
- CheckpointFormatVersion(模型定義使用的版本)
- map<string, CollectionDef> (集合)
- NodeList(節點value)
- BytesList(序列化value)
- map<string, SignatureDef>(簽名)
- AssetFileDef (權重值)
- MetaInfoDef(運算方法)
文章目錄
GraphDef
只關注計算圖的連線結構資訊, 根據連線結構中”索引“在MetaInfoDef中尋找節點運算的具體
message GraphDef {
repeated NodeDef node = 1;
// 版本號
VersionDef versions = 4;
// 實驗性的版本號
int32 version = 3 [deprecated = true];
FunctionDefLibrary library = 2;
};
NodeDef
message NodeDef { //節點的唯一識別符號,可以通過節點名稱來獲取相應的節點 string name = 1; //使用的運算方法的名稱,通過這個名稱可在tensorflow計算圖元圖的 //MetaInfoDef屬性中找到該運算的劇吐資訊 string op = 2; //一個字串列表,定義運算的輸入 repeated string input = 3; //指定該節點執行的裝置 //通過device屬性指定處理這個運算的裝置,當device屬性為空時, //Tensorflow將自動選擇最合適的裝置來執行這個運算 string device = 4; // 名字到具體屬性的對映 map<string,AttrrValue> attr = 5; }
案列
graph_def {
// 變數Variable節點
nodo {
name : "v1"
op : "Variable"
attr {
key : "_output_shapes"
value {
list{ shape { dim { size : 1}}}
}
}
attr {
key : "dtype"
value {
tpye : DT_FLOAT
}
}
····
}
// Add 節點
// 指定了2給輸入,v1/read 表示可以讀取v1的值,如果v1有多個輸出值
// 則必須使用 v1/read:src_output 指定,src_output 表示節點的第
// src_output輸出(從0開始),如果獲取的時第1給輸出,則可以省略”:src_output"
// 直接寫成 v1/read
node {
name : "add"
op : "Add"
input : "v1/read"
input : "v2/read"
···
}
// 該節點時系統在完成Tensorflow模型儲存過程中自動生成的一個運算
node {
name : "save/control_dependency"
op : "Identity"
···
}
// 版本號
versions {
producer : 9
}
}