Win10:tensorflow 学习笔记(1)
目錄:
- 前言
- 基本概念
- 圖
- 實現原理
- 擴展功能
- 1自動求導
- 2單獨執行子圖
- 3計算圖的控制流
- 4文件系統路徑
- 5隊列
- 6容器
- 性能優化
- 尾聲:
前言
經過前段時間的努力,已經在電腦上搭好了深度學習系統,接下來就要開始跑程序了,將AI落地了。
安裝win10下tensforlow 可以參照之前的例子:win10+gpu安裝
在使用gpu版本中一些特別的問題,可以參照這篇:win10+tensorflow+gpu
在運行過程中遇到的一些錯誤,可以參照這篇::tensorflow 錯誤
學習的結果要依靠輸出來檢驗。
環境還是得特別強調一下:
硬件:
華碩(ASUS) 飛行堡壘三代FX60VM GTX1060 15.6英寸游戲筆記本電腦(i7-6700HQ 8G 128GSSD+1T FHD)黑色
軟件:
python 3.6:下載
tensorflow 1.8.0 地址
cuda 9.0:下載
cudnn 7.1:下載
基本概念
要想流暢得使用tensorflow實現你的項目,必須要對一些基礎概念有很深入的理解。
圖
tensorflow中的計算可以表示為一個計算圖,其中每一個運算操作將作為一個節點,節點與節點之間的連接稱為邊。這個計算圖描述了數據的計算流程,必須要好好理解這個概念,才能體會到這個計算模型的優越。
計算圖中每一個節點可以有任意多個輸入和任意多個輸出,每一個節點描述了一種運算操作,節點可以算是運算操作的實例化。在計算圖的邊中流動的數據被稱為張量,故得名tensorflow。session 是用戶使用tensorflow時的交互式接口。用戶可以通過Session的extend方法添加新的節點和邊,用以創建計算圖,然后就可以通過Session的Run方法執行計算圖:用戶給出需要計算的節點,同時提供輸入數據,Tensorflow就會自動尋找所有需要計算的節點并按依賴順序執行它們。
variables可以保存張量,而其他張量則不會保存。
實現原理
這張圖很好的展示了,tensorflow的實現方式,高度抽象:
客戶端負責與使用者交互。
master負責當客戶端與worker的中介
worker則負責調度具體的硬件實現計算。
在只有一個硬件設備的情況下,計算圖會按照依賴關系被順序執行。 當一個節點的所有上游依賴都被執行完時(依賴數減為0),這個節點就會被加入ready queue 以等待執行。同時他下游的所有節點的依賴數減1.
分布式的時候遇到的難題:
- 每一個節點該讓什么設備執行?
- 如何管理節點間的數據通信。
1第一個問題,目前采用貪婪策略解決,未來希望使用強化學習。
2第二個問題,當給節點的分配方案確定時,整個計算圖就會被劃分為許多子圖,使用同一個設備并且相鄰的節點會被劃分到同一個子圖。然后計算圖中從x到y的邊,會被取代為一個發送端的發送節點和一個接受端的接受節點,以及從發送節點到接受節點的邊。
問題就這樣簡化了,機制很優秀。
這是cpu和gpu通信的圖。
擴展功能
1自動求導
計算costfunction的梯度很關鍵,tensorflow支持自動求導,
比如一個tensor c在計算圖中有一組依賴的tensor{x},那么在tensorflow中可以自動導出{dc/dx}。這個求解過程在計算途中通過增加節點自動實現。
反向規則。
[db,dw,dx]=tf.gradients(C,[b,w,x]).
2單獨執行子圖
用戶可以選擇計算圖的任意子圖,并沿某些邊輸入數據,同時從另一些邊獲取輸出結果。Tensorflow用節點名加port的形式指定數據,例如bar:0表示名為bar的節點的第一個輸出。
同時,tensorflow會自動確定哪些節點應該被執行。
3計算圖的控制流
提供高階函數,例如merge和swith來進行控制流。
4文件系統路徑
在分布式的時候,直接讀取本地文件,而不是讀取異地文件。
5隊列
tensorflow支持fifo隊列,也支持shuffling queue隊列進行調度,用以滿足要求。
6容器
每一個進程的默認容器會一直存在,直到進程結束,它可以幫助不同計算圖的會話分享狀態變量。管理長期變量的機制。
性能優化
1高階函數自動優化基本操作。
2任務調度優化,內存,cpu綜合考慮。
3支持優化庫。
4數據壓縮
5并行計算模式:1數據并行,模型并行,流水線并行。
尾聲:
學以致用,以學促用。
歡迎大家一起分享。
總結
以上是生活随笔為你收集整理的Win10:tensorflow 学习笔记(1)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java boxplot_java –
- 下一篇: java 优酷视频缩略图_优酷视频缩略图