Tensorflow[目錄結構]


1 - Tensorflow源碼目錄結構

基於2018年5月28日github的tensorflow源碼,即1.8版本
html

第一層

tensorflow: 核心代碼目錄。
third_party:第三方庫,包括:eigen3,fft2d,hadoop,mkl,probuf ,kafka,mpi,tensorRT,nccl,grpc等等。
tools:只有兩個文件 bazel.rc 和 tf_env_collect.sh。
util/python:存放用到的 python 工具,不過當前版本其中只有一個BUILD文件。java

tensorflow

c:
cc:
compiler:
contrib:存放有其餘項目貢獻者添加的相關貢獻代碼,非核心官方代碼
core:這是 tensorflow 的核心代碼模塊.
docs_str:以md呈現的幫助文檔
examples:以jupyter notebook呈現的例子文檔
g3doc:爲空,都遷移到docs_str
go,java,python:主要的第三方 API,其中python是最全的接口
stream_executor:tensorflow 流圖的並行計算執行,核心代碼,主要是關於cuda的封裝。
tools:
user_ops:python

tensorflow/core:Core 目錄是代碼最核心的部分,包含 框架、圖、會話、runtime 最核心的部分

api_def:
common_runtime:公共運行庫,包含 會話(session)、線程(thread),內存管理(memory), 設備調度(device)等基本運行庫。
debug:
distributed_runtime:分佈式運行庫,與上面相似,做爲分佈式狀況下的運行庫,提供運行支撐。
example:
framework:框架基礎模塊定義,主要是通用組件的結構格式定義;
graph:計算流圖相關基礎操做(類結構),包括 拆分、合併、執行 等操做,被外面的 executor 調用;
kernels:核心操做定義,像經常使用的運算 matmul,sigmoid 等操做;
lib:基礎庫用於內部調用,包括 hash、io、jpeg、math 等;
ops:對 kernel 下的op進行註冊和對外聲明;
platform: 針對不一樣平臺的依賴
profiler:
protobuf:Google 的傳輸交換模塊,用於傳輸時的數據序列化;
public:
user_ops:
util:git

2 - Tensorflow運行目錄結構

上述是基於tensorflow的源碼進行目錄結構展現,而咱們一般使用的時候,是基於編譯後的,即所謂運行的目錄。基於tensorflow_gpu 1.7,採用命令github

tree -L 1 -F -C tensorflow

對centos系統中"Anaconda3/lib/python3.6/site-packages"下面的tensorflow進行目錄展現
算法


圖2.1 tensorflow一級目錄結構
其中,contrib較爲特殊,其中涉及的部分較多

圖2.2 tensorflow/contrib一級目錄結構

圖2.3 tensorflow中其餘子目錄的一級目錄結構
當咱們運行

import tensorflow as tf

會自動執行"tensorflow/_init_.py"該文件,而該文件中有如圖所示的一行代碼,會自動將tensorflow/python下的py文件都導入進來
centos


然而tensorflow/python同時會自動運行tensorflow/python/_ init_.py

從而在頂層空間中會有keras等變量,能夠直接經過tf.keras進行訪問,而其對應的就是tensorflow/python/keras文件夾。固然該初始化文件中還有部分是導入tensorflow/core的

因此,咱們一般直接訪問tf.xxx都是在訪問tensorflow/python和tensorflow/core等下面的部分;固然由於tensorflow/_init_.py下面有如api

del python
del core

等代碼,從而,咱們在不顯式導入的基礎上,只是訪問session

tensorflow/python/{keras,layers,...}
tensorflow/contrib
tensorflow/tools

這三個部分的文件夾路徑架構

參考文獻:

相關文章
相關標籤/搜索