學(xué)習(xí)筆記TF050:TensorFlow源代碼解析

TensorFlow目錄結(jié)構(gòu)。

ACKNOWLEDGMENTS #TensorFlow版本聲明
ADOPTERS.md #使用TensorFlow的人員或組織列表
AUTHORS #TensorFlow作者的官方列表
BUILD
CONTRIBUTING.md #TensorFlow貢獻(xiàn)指導(dǎo)
ISSUE_TEMPLATE.md #提ISSUE的模板
LICENSE #版權(quán)許可
README.md
RELEASE.md #每次發(fā)版的change log
WORKSPACE #配置移動(dòng)端開發(fā)環(huán)境
bower.BUILD
configure
models.BUILD
tensorflow #主目錄
third_party #第三方庫(kù),包括eigen3(特征運(yùn)算,SVD、LU分解等)、gpus(支持cuda)、hadoop、jpeg、llvm、py、sycl
tools #構(gòu)建cuda支持
util

tensorflow目錄結(jié)構(gòu):

BUILD
__init__.py
c
cc #采用C++進(jìn)行訓(xùn)練的親樣例
compiler
contrib #將常用功能封裝在一起高級(jí)API
core #C++實(shí)現(xiàn)主要目錄
examples #各種示例
g3doc #針對(duì)C++、Python版本代碼文檔
go
java
opensource_only #聲明目錄
python #Python實(shí)現(xiàn)主要目錄
stream_executor #流處理
tensorboard #App、Web支持,以及腳本支持
tensorflow.bzl
tf_exported_symbols.lds
tf_version_script.lds
tools #工具雜項(xiàng)
user_ops
workspace.bzl

contirb目錄。保存常用功能封裝高級(jí)API。不是官方支持。高級(jí)API完善后被官方遷移到核心TensorFlow目錄或去掉。部分包(package)在https://github.com/tensorflow/models 有更完整實(shí)現(xiàn)。
framework:很多函數(shù)在這里定義(get_varibles、get_global_step),一些廢棄或不推薦(deprecated)函數(shù)。
layers:initializers.py,變量初始化函數(shù)。layers.py,層操作和權(quán)重偏置變量函數(shù)。optimizers.py,損失函數(shù)和global_step張量?jī)?yōu)化器操作。regularizers.py,帶權(quán)重正則化函數(shù)。summaries.py,摘要操作添加到tf.GraphKeys.SUMMARIES集合中的函數(shù)。
learn:使用TensorFlow進(jìn)行深度學(xué)習(xí)高級(jí)API,訓(xùn)練模型、評(píng)估模型、讀取批處理數(shù)據(jù)、隊(duì)列功能API封裝。
rnn:額外RNN Cell,對(duì)RNN隱藏層改進(jìn),LSTMBlockCell、GRUBlockCell、FusedRNNCell、GridLSTMCell、AttentionCellWrapper。
seq2seq:建立神經(jīng)網(wǎng)絡(luò)seq2seq層和損失函數(shù)操作。
slim:TensorFlow-Slim(TF-Slim),定義、訓(xùn)練、評(píng)估TensorFlow復(fù)雜模型輕量級(jí)庫(kù)。TF-Slim與TensorFlow原生函數(shù)和tf.contrib其他包自由組合。TF-Slim已逐漸遷移到TensorFlow開源Models,里面有廣泛使用卷積神經(jīng)網(wǎng)絡(luò)圖像分類模型代友,可以從頭訓(xùn)練模型或預(yù)測(cè)訓(xùn)練模型開始微調(diào)。

core目錄。C語(yǔ)言文件,TensorFlow原始實(shí)現(xiàn)。

BUILD
common_runtime #公共運(yùn)行庫(kù)
debug
ditributed_runtime #分布式執(zhí)行模塊,含有g(shù)rpc session、grpc worker、grpc master
example
framework #基礎(chǔ)功能模塊
graph
kernels #核心操作在CPU、CUDA內(nèi)核實(shí)現(xiàn)
lib #公共基礎(chǔ)庫(kù)
ops
platform #操作系統(tǒng)實(shí)現(xiàn)相關(guān)文件
protobuf #.proto文件,用于傳輸時(shí)結(jié)構(gòu)序列化
public #API頭文件目錄
user_ops
util

Protocol Buffers,谷歌公司創(chuàng)建的數(shù)據(jù)序列化(serialization)工具,結(jié)構(gòu)化數(shù)據(jù)序列化,數(shù)據(jù)存儲(chǔ)或RPC數(shù)據(jù)交換格式。定義協(xié)議緩沖區(qū),生成.pb.h和.pb.cc文件。定義get、set、序列化、反序列化函數(shù)。TensorFlow核心proto文件graph_def.proto、node_def.proto、op_def.proto保存在framework目錄。構(gòu)圖時(shí)先構(gòu)建graph_def,存儲(chǔ)下來(lái),在實(shí)際計(jì)算時(shí)再轉(zhuǎn)成圖、節(jié)點(diǎn)、操作內(nèi)存對(duì)象。
tensorflow-1.1.0/tensorflow/core/framework/node_def.proto,定義proto文件。node_def.proto定義指定設(shè)備(device)操作(op)、操作屬性(attr)。
framework 目錄還有node_def_builder.h、node_def_builder.cc、node_def_util.h、node_def_util_test.cc。在C++里操作node_def.proto的protobuf結(jié)構(gòu)。

examples目錄,深度學(xué)習(xí)例子,MNIST、Word2vec、Deepdream、Iris、HDF5。TensorFlow在Android系統(tǒng)上的移動(dòng)端實(shí)現(xiàn)。擴(kuò)展.ipynb文檔教程,jupyter打開。

g3doc。存放Markdown維護(hù)的TensorFlow文檔,離線手冊(cè)。g3doc/api_docs目錄內(nèi)容從代碼注釋生成,不應(yīng)該直接編輯。腳本tools/docs/gen_docs.sh生成API文檔。無(wú)參數(shù)調(diào)用,只重新生成Python API文檔,操作文檔,包括Python、C++定義。傳遞-a,運(yùn)行腳本重新生成C++ API文檔,需要完裝doxygen。必須從tools/docs目錄調(diào)用。

python目錄。激活函數(shù)、卷積函數(shù)、池化函數(shù)、損失函數(shù)、優(yōu)化方法。

tensorboad目錄。實(shí)現(xiàn)TensorFlow圖表可視化工具代碼,代碼基于Tornado實(shí)現(xiàn)網(wǎng)頁(yè)端可視化。http://www.tornadoweb.org/en/stable/ 。

TensorFlow源代碼學(xué)習(xí)方法。
1)了解自己研究的基本領(lǐng)域,圖像分類、物體檢測(cè)、語(yǔ)音識(shí)別,了解領(lǐng)域所用技術(shù),卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)、循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network,RNN),知道實(shí)現(xiàn)基本原理。
2)運(yùn)行GitHub對(duì)應(yīng)基本模型,目錄結(jié)構(gòu):

AUTHORS
CONTRIBTING.md
LICENSE
README.md
WORKSPACE
autoencoder
compression
differential_privacy
im2txt
inception
lm_1b
namignizer
neural_gpu
neural_programmer
next_frame_prdiction
resnet
slim
street
swivel
syntaxnet
textsum
transformer
tutorials
video_prediction

計(jì)算機(jī)視覺,compression(圖像壓縮)、im2txt(圖像描述)、inception(對(duì)ImageNet數(shù)據(jù)集用Inception V3架構(gòu)訓(xùn)練評(píng)估)、resnet(殘差網(wǎng)絡(luò))、slim(圖像分類)、street(路標(biāo)識(shí)別或驗(yàn)證碼識(shí)別)。
自然語(yǔ)言處理,lm_1b(語(yǔ)言模型)、namignizer(起名字)、swivel(Swivel算法轉(zhuǎn)換詞向量)、syntaxnet(分詞和語(yǔ)法分析)、textsum(文本摘要)、tutorials目錄word2vec(詞轉(zhuǎn)換向量)。
教科書式代碼,看懂學(xué)懂有助今后自己實(shí)現(xiàn)模型。運(yùn)行模型,調(diào)試、調(diào)參。完整讀完MNIST或CIFAR10整個(gè)項(xiàng)目邏輯,就掌握TensorFlow項(xiàng)目架構(gòu)。
slim目錄。TF-Slim圖像分類庫(kù)。定義、訓(xùn)練、評(píng)估復(fù)雜模型輕量級(jí)高級(jí)API。訓(xùn)練、評(píng)估lenet、alexnet、vgg、inception_v1、inception_v2、inception_v3、inception_v4、resnet_v1、resnet_v2,模型位于slim/nets:

alexnet.py
alexnet_test.py
cifarnet.py
inception.py
inception_resnet_v2.py
inception_resnet_v2_test.py
inception_utils.py
inception_v1.py
inception_v1_test.py
inception_v2.py
inception_v2_test.py
inception_v3.py
inception_v3_test.py
inception_v4.py
inception_v4_test.py
lenet.py
nets_factory.py
nets_factory_test.py
overfeat.py
overfeat_test.py
resnet_utils.py
resnet_v1.py
resnet_v1_test.py
resnet_v2.py
resnet_v3_test.py
vgg.py
vgg_test.py

TF-Slim包含腳本從頭訓(xùn)練模型或從預(yù)先訓(xùn)練網(wǎng)絡(luò)開始訓(xùn)練模型并微調(diào),slim/scripts:

finetune_inception_v1_on_flowers.sh
finetune_inception_v3_on_flowers.sh
train_cifarnet_on_cifar10.sh
train_lenet_on_mnist.sh

TF-Slim包含下載標(biāo)準(zhǔn)圖像數(shù)集,轉(zhuǎn)換TensorFlow支持TFRecords格式腳本,slim/datasets:

cifar10.py
dataset_factory.py
dataset_utils.py
download_and_convert_cifar10.py
download_and_convert_flowers.py
download_and_convert_mnist.py
flowers.py
imagenet.py
mnist.py

3)結(jié)合要做的項(xiàng)目,找到相關(guān)論文,自己用TensorFlow實(shí)現(xiàn)論文內(nèi)容。質(zhì)的飛躍。

參考資料:
《TensorFlow技術(shù)解析與實(shí)戰(zhàn)》

歡迎付費(fèi)咨詢(150元每小時(shí)),我的微信:qingxingfengzi

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 年前有朋友推薦我Flexbox Froggy 青蛙游戲?qū)W習(xí)flex . 一直沒有玩。然后一直覺得flex是個(gè)新鮮前...
    Songlairui閱讀 2,216評(píng)論 0 3
  • 進(jìn)入高中一個(gè)月了,后天就要月考了,我知道我一定會(huì)考砸,是的,一定會(huì),我長(zhǎng)這么大,還沒對(duì)什么事這么肯定過(guò)。這一個(gè)...
    時(shí)年初遇閱讀 160評(píng)論 0 0
  • 我們?nèi)プ蠲赖牡胤饺ヂ眯? 阝
    橙阝_3d1b閱讀 190評(píng)論 0 0
  • 今天約了付老師一家,草莽哥一家,南瓜媽媽母子,大家商量中午飯一起去吃南湖的一家柴火房的燒鵝,飯后帶孩子們到...
    淳淳的媽媽閱讀 1,057評(píng)論 2 4
  • ""愛情是大自然最高明的騙術(shù),婚姻是拆穿這場(chǎng)騙局的手段,最終走向毀滅。走進(jìn)婚姻是不幸的,但沒有婚姻也是不幸...
    空山靈雨_f5a7閱讀 353評(píng)論 2 0

友情鏈接更多精彩內(nèi)容