linux python源碼目錄結構,TensorFlow0.8源碼閱讀 -- 代碼目錄結構講解

TensorFlow0.8發布以來受到了大量機器學習領域愛好者的關注,目前其項目在github上的follow人數在同類項目中排名第一。作為google的第一個開源項目,TensorFlow的源碼結構較為清晰,相關的代碼注釋覆蓋較全。本文首先從代碼結構入手,分析TesnsorFlow的各個模塊構成。

根目錄結構的相關介紹

以下是TensorFlow項目根目錄下的文件結構(目前以TensorFlow-0.8為例)

bf27527fe3c8f29a389c0f339d607290.png

以下是對根目錄下的幾個核心文件和目錄的相關介紹:

目錄tensorflow 該目錄下存放著tensorflow的核心代碼

目錄google 該目錄下存放著protobuf的相關代碼,該目錄通過在git clone 命令后添加 --recurse-submodules 可以下載得到。protobuf主要用于tensorflow中的各模塊通信。

目錄third_party/tools/util 目前這三個目錄中的文件較少,還未看出其相關作用,可能會在接下來的項目發展中變得更加完善。

文件configure 該文件用于配置tensorflow的安裝環境,運行該文件并完成tensorflow的安裝環境配置后,運行bazel build -c opt //tensorflow/cc:tutorials_example_trainer 即可完成代碼的編譯工作。(注 需要先安裝bazel)

由于目錄google 的作用僅為提供protobuf的通信支持,當前我們主要對目錄tensorflow的相關結構進行分析。

tensorflow目錄結構的相關介紹

以下是目錄tensorflow 下的相關目錄和文件

e0a0f3a7484ea3061e7a713ec48666ba.png

以下是對該目錄下的幾個重要目錄的簡單介紹:

目錄core 該目錄為tensorflow的C++源碼的核心存放地點,接下來我們會對該目錄中存放的各個模塊進行簡要介紹。

目錄core 中的C++邏輯實現的。這樣做的好處是利用了python較方便的編程特性和C++較高效的執行效率。

目錄tensorboard tensorborad是tensorflow中非常有特色的一個模塊,該模塊可以用于生成模型訓練中實時生成圖表,用于監控模型的訓練程度。

目錄models 該目錄下存放這多個使用pyton實現的模型實例。

目錄contrib 該目錄下存放有其他項目貢獻者添加的相關貢獻代碼,由于tensorflow受關注程度較高,目前該目錄正急劇膨脹。

其他

目前來看tensorflow中很多模塊正處于剛開始起步的階段,很多邏輯還有待完善(如當前支持的模型較少、很多方法還未實現等)。

本文接下來會對核心目錄core 中的文件結構進行簡要的介紹。

core目錄結構的相關介紹

core目錄是tensorflow源碼中最核心的一個目錄,其代碼邏輯主要為C++開發實現。

以下為該目錄的代碼組織結構

2282738b6b6bf720397b03e149b422b8.png

以下是對該目錄下的幾個主要模塊(目錄)的功能介紹

目錄common_runtime 該目錄下包含了tensorflow中session執行的通用邏輯流程。

目錄distributed_runtime tensorflow 與分布式相關的執行邏輯。

目錄graph tensorflow圖相關操作的邏輯。由于tensorflow中的數據計算本質上是一個圖狀結構的計算流程,該過程中存在將圖進行切分并且并行化執行的可能性。該目錄下的代碼邏輯即為對圖數據進行結構化定義并進行拆分的相關內容。

目錄framework 該目錄下對tensorflow進行計算過程中的通用組件進行了定義和實現。

目錄kernels 對tensorflow中各個單步操作的具體實現。 該目錄中共有約470個文件,其中414個文件和op相關,該目錄下包含了大量的tensorflow中單步操作的實現方式。(如Variable())

目錄ops 對kernel/ 下的op進行注冊和對外聲明。

目錄models 實現了幾個tensorflow支持的計算模型,該部分代碼由python實現。

目錄client/public tensorflow對外api的定義和實現

目錄util/lib 一些公用的調用方法。

目錄protobuf tensorflow下各個模塊間進行數據傳輸的數據結構定義,通過proto進行配置實現。

目錄user_ops 用戶可進行編寫自己的op并添加到該目錄。

本文永久更新鏈接地址:http://www.linuxidc.com/Linux/2016-07/133215.htm0b1331709591d260c1c78e86d0c51c18.png

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/393826.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/393826.shtml
英文地址,請注明出處:http://en.pswp.cn/news/393826.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

在VirtualBox里復制VDI文件[轉]

原文地址:http://blog.sina.com.cn/s/blog_591a2c940100aree.html 在VirtualBox的快速修復界面里,可以隨時生成當前狀態的備份。當生成了備份之后,會在Snapshots目錄下創建一個新的VDI文件,之后對當前狀態所做的一切操作都將針對最新的VDI文件…

軟件開發重要性_在軟件開發中考慮時間的重要性

軟件開發重要性by Crunch Tech通過Crunch Tech 在軟件開發中考慮時間的重要性 (The importance of time to think in Software Development) Modern Technology teams operate in a fast-paced environment. With a Technology team of only 35 people, we average over 50 re…

自動登錄360,百度

方便登錄,寫的小工具 1 import win.ui;2 import web.ui;3 /*DSG{{*/4 var winform ..win.form(text"AAuto Form";right599;bottom399)5 winform.add(6 button{cls"button";text"百度";left41;top25;right163;bottom59;z1};7 button2…

arm linux 開機電路_【技術角度看問題之一】ARM到底是個啥?

【小宅按】近期公司推出來基于ARM芯片的服務器,本文就一些基本概念,比如ARM, ARM64, ARMv8, ARM7,ARMv7, 64位等讓人費解的概念進行了粗淺地分析,涉及的關鍵字已用粗體標出。文中觀點僅僅是一家之言,拙劣之…

leetcode77. 組合(回溯)

給定兩個整數 n 和 k&#xff0c;返回 1 … n 中所有可能的 k 個數的組合。 示例: 輸入: n 4, k 2 輸出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ] 代碼 class Solution {List<List<Integer>> cListnew ArrayList<>();public List<List<I…

linux系統配置腳本,Linux系統配置腳本開機自啟

在日常使用過程中&#xff0c;當有時候需要運行開機自啟腳本&#xff0c;同時想看到輸出結果的時候&#xff0c;不免就需要將系統配置為免密登錄模式&#xff0c;本文主要介紹再init3模式(多用戶命令行界面)&#xff0c;運行開機自啟腳本及輸出腳本指令運行數據結果。本文使用的…

WPF多線程UI更新

前言 在WPF中&#xff0c;在使用多線程在后臺進行計算限制的異步操作的時候&#xff0c;如果在后臺線程中對UI進行了修改&#xff0c;則會出現一個錯誤&#xff1a;&#xff08;調用線程無法訪問此對象&#xff0c;因為另一個線程擁有該對象。&#xff09;這是很常見的一個錯誤…

iOS------App之間傳遞數據的幾種方式

UIDocumentInteractionController UIActivityViewController Shared Keychain Access Custom URL Scheme Web Service iCloud API UIPasteboard 參考 http://enharmonichq.com/sharing-data-locally-between-ios-apps/http://stackoverflow.com/questions/9425706/share-data-b…

了解如何使用Vue.js CLI

Interested in learning Vue.js? Get my ebook at vuehandbook.com有興趣學習Vue.js嗎&#xff1f; 在vuehandbook.com上獲取我的電子書 One of them is the Vue Command Line Interface (CLI).其中之一是Vue命令行界面(CLI)。 Note: There is a huge rework of the CLI goin…

rabbitmq學習——隊列

public class Send { public static final String routingKey "wuqidi_task_durable"; /*工作隊列 也叫任務隊列 目的是將任務發送到隊列中 由工作者進行處理 在后臺的多個工作者中 任務是共享的*/ public static void main(String[] args) throws Exception{ Conne…

python 戰艦_簡單Python戰艦

我最近開始學習python&#xff0c;并決定嘗試制作我的第一個項目。我正在嘗試做一個戰艦游戲&#xff0c;隨機放置兩個3塊長的船在一塊板上。但效果不太好。我為2號飛船做了一個臨時的循環&#xff0c;它應該檢查一下旁邊的兩個空間是否空閑&#xff0c;然后在那里建立自己的空…

leetcode面試題 08.12. 八皇后(回溯)

設計一種算法&#xff0c;打印 N 皇后在 N N 棋盤上的各種擺法&#xff0c;其中每個皇后都不同行、不同列&#xff0c;也不在對角線上。這里的“對角線”指的是所有的對角線&#xff0c;不只是平分整個棋盤的那兩條對角線。 注意&#xff1a;本題相對原題做了擴展 示例: 輸…

linux 進入redis 數據庫,Linux下Redis數據庫的安裝方法與自動啟動腳本分享

安裝Redis(1) 下載Rediswget http://redis.googlecode.com/files/redis-2.2.11.tar.gztar xzvf redis-2.2.11.tar.gz(2) 編譯并安裝Redismake && make install(3) 復制并修改配置文件cp redis.conf /etc/redis.confvi /etc/redis.conf注意修改以下幾項&#xff1a;daem…

Flutter 36: 圖解自定義 View 之 Canvas (三)

小菜繼續學習 Canvas 的相關方法&#xff1a; drawVertices 繪制頂點 小菜上次沒有整理 drawVertices 的繪制方法&#xff0c;這次補上&#xff1b;Vertice 即頂點&#xff0c;通過繪制多個頂點&#xff0c;在進行連線&#xff0c;多用于 3D 模型中&#xff1b; drawVertices 包…

sphinx 項目根目錄_如何使用Sphinx工具記錄Django項目

sphinx 項目根目錄I recently visited a company where I had a nice talk with one of its employees. We talked about technology and programming. Then we touched the subject of project documentation. Specifically how React does it automatically but Django doesn…

程序員必知之浮點數運算原理詳解

導讀&#xff1a;浮點數運算是一個非常有技術含量的話題&#xff0c;不太容易掌握。許多程序員都不清楚使用操作符比較float/double類型的話到底出現什么問題。 許多人使用float/double進行貨幣計算時經常會犯錯。這篇文章是這一系列中的精華&#xff0c;所有的軟件開發人員都應…

axure選中后橫線切換_3、開關狀態切換 —— Axure實用交互

寫在開頭:開關的制作在幾乎所有原型設計中都會用到&#xff0c;所以美觀自然的交互開關可以給你的原型設計加分不少。本次開關設計主要用到的是邏輯為&#xff1a;選中狀態的切換首先&#xff0c;來看一下演示動畫開始原型設計一、創建元件首先需要打開Axure軟件&#xff0c;并…

Django框架——模型(數據庫操作)

-- models.py-- ORM(object-relation mapping) 實現數據模型與數據庫的解耦&#xff1b;# 對象&#xff0c;關系&#xff0c;映射&#xff1b;1.根 據對象的類型生成表結構&#xff1b;2.將對象、列表的操作&#xff0c;轉換為sql語句&#xff1b;3.將sql查詢到的結果轉換為對象…

leetcode140. 單詞拆分 II(回溯+記憶化)

給定一個非空字符串 s 和一個包含非空單詞列表的字典 wordDict&#xff0c;在字符串中增加空格來構建一個句子&#xff0c;使得句子中所有的單詞都在詞典中。返回所有這些可能的句子。 說明&#xff1a; 分隔時可以重復使用字典中的單詞。 你可以假設字典中沒有重復的單詞。 …

#loj 3058 [HNOI2019] 白兔之舞

單位根反演思博題 模數是亂給的記得整個任意模數ntt k為p-1的約數意味著一定存在k次單位根&#xff0c;設g是p的原根則\(w_{k}^{1}g^{\frac{k-1}{p}}\) 既然k次單位根存在自然考慮單位根反演了 設\(f(i)\)表示跳了i步并且停在了第二維為y的頂點的方案數 設\(st\)表示初始向量而…