基於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
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
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
上述是基於tensorflow的源碼進行目錄結構展現,而咱們一般使用的時候,是基於編譯後的,即所謂運行的目錄。基於tensorflow_gpu 1.7,採用命令github
tree -L 1 -F -C tensorflow
對centos系統中"Anaconda3/lib/python3.6/site-packages"下面的tensorflow進行目錄展現
算法
import tensorflow as tf
會自動執行"tensorflow/_init_.py"該文件,而該文件中有如圖所示的一行代碼,會自動將tensorflow/python下的py文件都導入進來
centos
因此,咱們一般直接訪問tf.xxx都是在訪問tensorflow/python和tensorflow/core等下面的部分;固然由於tensorflow/_init_.py下面有如api
del python del core
等代碼,從而,咱們在不顯式導入的基礎上,只是訪問session
tensorflow/python/{keras,layers,...} tensorflow/contrib tensorflow/tools
這三個部分的文件夾路徑架構
參考文獻: