1. 程式人生 > >tensorflow資料結構-GraphDef

tensorflow資料結構-GraphDef


計算圖結構

  1. MetaGraphDef(計算圖)

文章目錄

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
    }
}