文章作者:Tyan
博客:noahsnail.com
TensorFlow is an Open Source Software Library for Machine Intelligence
TensorFlow是一個關(guān)于機器智能的開源軟件庫
About TensorFlow
TensorFlow? is an open source software library for numerical computation using data flow graphs. Nodes in the graph represent mathematical operations, while the graph edges represent the multidimensional data arrays (tensors) communicated between them. The flexible architecture allows you to deploy computation to one or more CPUs or GPUs in a desktop, server, or mobile device with a single API. TensorFlow was originally developed by researchers and engineers working on the Google Brain Team within Google's Machine Intelligence research organization for the purposes of conducting machine learning and deep neural networks research, but the system is general enough to be applicable in a wide variety of other domains as well.
關(guān)于TensorFlow
TensorFlow?是一個用數(shù)據(jù)流圖進行數(shù)值計算的開源軟件庫。數(shù)據(jù)流圖中的結(jié)點表示數(shù)學(xué)運算,數(shù)據(jù)流圖中的邊表示多維數(shù)據(jù)數(shù)組(張量)之間的數(shù)據(jù)交互。這個靈活的結(jié)構(gòu)讓你可以通過單獨的API將計算部署在一個或多個CPU或GPU上,這些CPU或GPU可以位于桌面端、服務(wù)器或移動設(shè)備上。TensorFlow最初是由Google大腦團隊中的研究員和工程師開發(fā)的,Google大腦團隊在Google的機器智能研究組織中主要是進行機器學(xué)習(xí)和深度神經(jīng)網(wǎng)絡(luò)研究的,TensorFlow系統(tǒng)具有足夠的通用性,也可以應(yīng)用在許多其它的領(lǐng)域。
What is a Data Flow Graph?
Data flow graphs describe mathematical computation with a directed graph of nodes & edges. Nodes typically implement mathematical operations, but can also represent endpoints to feed in data, push out results, or read/write persistent variables. Edges describe the input/output relationships between nodes. These data edges carry dynamically-sized multidimensional data arrays, or tensors. The flow of tensors through the graph is where TensorFlow gets its name. Nodes are assigned to computational devices and execute asynchronously and in parallel once all the tensors on their incoming edges becomes available.
什么是數(shù)據(jù)流圖?
數(shù)據(jù)流圖通過有向圖的結(jié)點和邊來描述數(shù)學(xué)計算。結(jié)點通常實現(xiàn)數(shù)學(xué)運算,但也能表示端點輸入數(shù)據(jù),推出結(jié)果,或讀/寫持續(xù)的變量。邊表示結(jié)點之間的輸入/輸出關(guān)系。這些數(shù)據(jù)邊攜帶動態(tài)大小的多維數(shù)據(jù)數(shù)組或張量。圖中的張量流動是TensorFlow名字的來源。結(jié)點被分配到計算設(shè)備上,以異步方式執(zhí)行,一旦結(jié)點輸入邊的所有張量可用便并行執(zhí)行。

TensorFlow Features
TensorFlow的特性
Deep Flexibility
TensorFlow isn't a rigid neural networks library. If you can express your computation as a data flow graph, you can use TensorFlow. You construct the graph, and you write the inner loop that drives computation. We provide helpful tools to assemble subgraphs common in neural networks, but users can write their own higher-level libraries on top of TensorFlow. Defining handy new compositions of operators is as easy as writing a Python function and costs you nothing in performance. And if you don't see the low-level data operator you need, write a bit of C++ to add a new one.
深度靈活性
TensorFlow不是一個死板的神經(jīng)網(wǎng)絡(luò)庫。如果你能將你的計算表示成數(shù)據(jù)流圖,你就可以使用TensorFlow。你要構(gòu)建數(shù)據(jù)流圖,并且編寫驅(qū)動計算的內(nèi)部循環(huán)。我們將提供幫助工具來裝配神經(jīng)網(wǎng)絡(luò)中的常見子圖,但用戶要能編寫在TensorFlow之上的他們自己的更高層次的庫。定義方便的操作符新組合就像定義一個Python函數(shù)那樣容易,在性能上不會有任何損失。如果你不想看你需要的低層操作符,你可以寫點C++添加一個新的操作符。
True Portability
TensorFlow runs on CPUs or GPUs, and on desktop, server, or mobile computing platforms. Want to play around with a machine learning idea on your laptop without need of any special hardware? TensorFlow has you covered. Ready to scale-up and train that model faster on GPUs with no code changes? TensorFlow has you covered. Want to deploy that trained model on mobile as part of your product? TensorFlow has you covered. Changed your mind and want to run the model as a service in the cloud? Containerize with Docker and TensorFlow just works.
真正的可移植性
TensorFlow運行在CPU或GPU上,在桌面端,服務(wù)器或移動計算平臺上。想在筆記本上實現(xiàn)你的機器學(xué)習(xí)想法而不需要任何特定的硬件?TensorFlow可以幫你實現(xiàn)。準備擴大并在GPU上更快的訓(xùn)練模型而不改變?nèi)魏谓Y(jié)點?TensorFlow可以幫你實現(xiàn)。想在移動端部署訓(xùn)練的模型作為產(chǎn)品中的一部分?TensorFlow可以幫你實現(xiàn)。改變你的想法并且想在云上運行模型來作為服務(wù)?用Docker進行容器化,TensorFlow能很好的工作。
Connect Research and Production
Gone are the days when moving a machine learning idea from research to product require a major rewrite. At Google, research scientists experiment with new algorithms in TensorFlow, and product teams use TensorFlow to train and serve models live to real customers. Using TensorFlow allows industrial researchers to push ideas to products faster, and allows academic researchers to share code more directly and with greater scientific reproducibility.
連接研究與產(chǎn)品
當將機器學(xué)習(xí)想法從研究轉(zhuǎn)化成產(chǎn)品時需要進行主要的重寫的日子已經(jīng)過去了。在Google,研究科學(xué)家在TensorFlow中進行新算法的實驗,產(chǎn)品團隊用TensorFlow來訓(xùn)練模型并實時的使用模型為真實的消費者服務(wù)。使用TensorFlow可以讓產(chǎn)品研究人員更快的將想法變?yōu)楫a(chǎn)品,可以讓學(xué)術(shù)研究人員更直接的共享代碼,具有更大的科學(xué)再現(xiàn)性。
Auto-Differentiation
Gradient based machine learning algorithms will benefit from TensorFlow's automatic differentiation capabilities. As a TensorFlow user, you define the computational architecture of your predictive model, combine that with your objective function, and just add data -- TensorFlow handles computing the derivatives for you. Computing the derivative of some values w.r.t. other values in the model just extends your graph, so you can always see exactly what's going on.
自動微分
基于梯度的機器學(xué)習(xí)算法將能從TensorFlow的自動微分能力中受益。作為一個TensorFlow用戶,你可以定義你自己的預(yù)測模型的計算結(jié)構(gòu),結(jié)合你的目標函數(shù),只需要添加數(shù)據(jù)——TensorFlow為你計算導(dǎo)數(shù)。計算一些值的導(dǎo)數(shù),而模型中的其它值只是擴展你的圖,因此你總是能確切的看到發(fā)生了什么。
Language Options
TensorFlow comes with an easy to use Python interface and a no-nonsense C++ interface to build and execute your computational graphs. Write stand-alone TensorFlow Python or C++ programs, or try things out in an interactive TensorFlow iPython notebook where you can keep notes, code, and visualizations logically grouped. This is just the start though -- we’re hoping to entice you to contribute interfaces to your favorite language -- be it Lua, JavaScript, or R.
語言選擇
TensorFlow附帶很容易使用的Python接口和使用的C++接口來構(gòu)建并執(zhí)行你的計算圖。在交互的TensorFlow iPython筆記本中編寫?yīng)毩⒌腡ensorFlow Python或C++程序,或嘗試一些東西,iPython筆記本可以存儲筆記,代碼和邏輯分組可視化。然而這僅僅只是一個開始——我們希望吸引你貢獻你最愛的語言的接口——它可以是Lua,Javascript或R。
Maximize Performance
Want to use every ounce of muscle in that workstation with 32 CPU cores and 4 GPU cards? With first-class support for threads, queues, and asynchronous computation, TensorFlow allows you to make the most of your available hardware. Freely assign compute elements of your TensorFlow graph to different devices, and let TensorFlow handle the copies.
最大化性能
想要充分利用具有32核CPU和4塊GPU的工作站的性能嗎?TensorFlow對線程、隊列和異步計算具有一流的支持,TensorFlow可以讓你最大程度的利用你的可用硬件,可以自由的將你的TensorFlow圖中計算元素分配到不同的設(shè)備上,讓TensorFlow來處理副本。
Who Can Use TensorFlow?
TensorFlow is for everyone. It's for students, researchers, hobbyists, hackers, engineers, developers, inventors and innovators and is being open sourced under the Apache 2.0 open source license.
TensorFlow is not complete; it is intended to be built upon and extended. We have made an initial release of the source code, and continue to work actively to make it better. We hope to build an active open source community that drives the future of this library, both by providing feedback and by actively contributing to the source code.
誰可以使用TensorFlow?
TensorFlow是給每一個人的。它是給學(xué)生、研究人員、業(yè)余愛好者、黑客、工程師、開發(fā)人員、發(fā)明家和創(chuàng)新者的,它是根據(jù)Apache 2.0開源協(xié)議開源的。
TensorFlow不是完整的;它將要建立和擴展。我們已經(jīng)制作了源代碼的初始版本,會繼續(xù)積極的工作使它更好。我們希望建立一個主動的開源社區(qū)來推動這個庫的未來,提供反饋并且積極的貢獻源代碼。
Why Did Google Open Source This?
If TensorFlow is so great, why open source it rather than keep it proprietary? The answer is simpler than you might think: We believe that machine learning is a key ingredient to the innovative products and technologies of the future. Research in this area is global and growing fast, but lacks standard tools. By sharing what we believe to be one of the best machine learning toolboxes in the world, we hope to create an open standard for exchanging research ideas and putting machine learning in products. Google engineers really do use TensorFlow in user-facing products and services, and our research group intends to share TensorFlow implementations along side many of our research publications.
為什么Google開源TensorFlow?
如果TensorFlow是如此之大,為什么對它開源而不是保留它的所有權(quán)?回答可能比你想象的簡單:我們相信機器學(xué)習(xí)是將來產(chǎn)品創(chuàng)新和技術(shù)創(chuàng)新的一個關(guān)鍵要素。這個領(lǐng)域的研究是全球性的并且發(fā)展迅速,但是缺少標準的工具。通過分享TensorFow,我們認為它是世界上最好的機器學(xué)習(xí)工具之一,我們希望創(chuàng)建一個開放的標準來交流研究想法并把機器學(xué)習(xí)應(yīng)用到產(chǎn)品中。Google工程師在面向用戶的產(chǎn)品和服務(wù)中真正的在使用TensorFlow,我們的研究組計劃與我們的許多研究出版物一起共享TensorFlow的實現(xiàn)。