日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

tensorflow gpu利用率低_「动手学习Tensorflow」- Tensorflow综述I

發布時間:2024/1/23 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 tensorflow gpu利用率低_「动手学习Tensorflow」- Tensorflow综述I 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

“ 一文概覽Tensorflow方方面面。”

大家好,我是人工智能工程師Alpha浪。

今天,我們開始「動手學習Tensorflow - Tensorflow 綜述」部分。

快速學習一門新技術的最好方法之一,就是首先對這門技術有著全局的認識,然后在深入了解每一部分的細節。

綜述就是最好的給你全局認識的讀物。


什么是Tensorflow

Tensorflow 是Google在2015年發布的一個端到端開源機器學習平臺。

它的前身是Google內部從2011年開始使用的Disbelief。

那么為什么叫做 Tensorflow 呢?

Tensor 表示多維數組,Flow表示流動,從字面上來看Tensorflow的意思為多維數組在流動。

Tensorflow將數值計算表達為一個計算圖,圖中的節點為算子,圖中的邊為多維數組。

一次數值計算由對應的多維數組 (Tensor) 流過相應的算子 (Operator)而表達,即Tensor 在Flow,所以叫做Tensorflow。


Why Tensorflow

為什么我們要選擇使用Tensorflow呢?

Tensorflow 由Google出品,Google家開源的工具一般都還不錯 (Google 大法好)。

Tensorflow有著強大的社區和生態,在工業界有著廣泛的成功案例。Tensorflow從2015年發布到2020年,已經是一項很成熟的技術方案了,部署在線上的Tensorflow,已經經歷過了數次雙十一流量高峰檢驗。

Tensorflow支持多種語言,C++, Python, java,javascript,swift etc。Java在國內是很多科技公司的線上編程語言,支持Java的tensorflow比那些只支持c++和python的庫要能打的很多。

Tensorflow支持分布式訓練和部署。

更多選擇Tensorflow的理由,我們在上一篇 深度學習框架紛爭 也有提及。


Tensorflow從2015年開源到現在,已經發布了104個版本,從單純的機器學習算法開發包,已經發展到一個巨大的生態系統,成為了一個端到端的機器學習平臺。

如今的Tensorflow包含以下四個部分:

  • Tensorflow核心開源庫
  • Tensorflow.js
  • 針對移動設備和IOT設備的Tensorflow Lite
  • 針對成產環境的Tfx和Tensorflow Serving

Tensorflow核心庫

Tensorflow核心庫是我們最常用的部分了,通過它,我們可以輕松構建機器學習模型。

通常來講,我們都是使用Tensorflow 核心庫的python api進行模型的編寫。

在下一篇文章中,我們會介紹Tensorflow入門實戰,本篇先介紹Tensorflow核心庫的一些基礎以及概念。

Tensorflow中的兩種模式

Tensorflow中存在兩種模式。

在Tensorflow2.X之后,默認是eager execution模式,即動態圖模式。

動態圖模式,在執行計算的同時構建計算圖,可以像獲取python中的變量值一樣獲取Tensor中的值,編寫模型和調試起來非常方便。

在Tensorflow1.x的版本中,默認是非eager execution模式,即靜態圖模式。

靜態圖模式,首先進行計算圖的構建,然后在該計算圖上才執行多次計算來進行模型的訓練和評估。

Tensor值不能在它定義的時候獲取的到,只有在真正計算的時候才能從session中獲取,調試起來非常麻煩,被很多人吐槽。

動態圖模式非常適合線下編寫調試模型;靜態圖模式則比較適合線上的場景,一次構建好計算圖,然后在這個計算圖上執行計算,比邊構建圖邊計算工程效率要高很多。

Tensorflow三種實現模型的方式

在Tensorflow中,我們可以有三種實現模型的方式。

在早期的Tensorflow1.x版本中,大家都是通過low-level api,直接使用graph和session來編寫模型。

在后來的Tensorflow1.x版本中,則是推薦使用Estimator來編寫模型。

在如今的Tensorflow2.x版本中,官方推薦使用Keras api來編寫模型。

Tensorflow編程模型中的一些基本概念

Tensorflow中,我們會遇到以下概念:Tensor,Variable,Placeholder和 Operator。

廣義上說,Tensorflow中變量分為兩種類型,Tensor和Operator,其中,Tensor表示多維數組,包括了像Variable和Placeholder這樣的specific tensor。Operator表示算子,例如相加,相乘等。

例如,我們想執行下圖中的一個簡單的relu模型。

參數W和b我們會定義成Variable,一般模型的參數都會定義成Variable類型的Tensor。

輸入變量X會定義成Placeholder,Placeholder是我們要fed進計算圖的那部分tensor,例如輸入和label。

而像Add,MatMul和RELU則是算子,對輸入的Tensor值進行相關計算。

Tensorflow中模型的三種存儲格式

Tensorflow中模型可以有三種存儲格式,分別是check point,saved model以及frozen graph格式。

Check point模型可能是我們接觸最多的模型格式了,我們在Tensorflow中直接模型存儲的方式就是以check point的格式來存儲。

Check point將全部學到的Variable tensor值進行保存,但是不保存模型結構,因此只有在模型source code存在的時候才能對check point格式的模型進行加載。

Saved model是Tensorflow Serving加載的模型格式。除了保存變量Variable的值之外,它還保存模型的結構,因此沒有模型的Source code也能對saved model進行加載。

Saved model格式常用在線上部署,例如通過Tensorflow serving來部署,或者通過tensorflow c++或者java api來進行模型的inference。

Frozen Graph格式目前在Tensorflow官方文檔中已經看不到了,但是它在業界還是有一定的應用場景的。

Frozen Graph根據模型的輸入和輸出,只保留在infercne階段和它們相關聯的計算圖中的節點和邊,進而可以去除掉在Inference階段用不到的tensor和operator,使得模型更小。

Tensorflow Dataset

Tensorflow Dataset是用來構建模型輸入pipeline的。

例如,我們通過Tensorflow Dataset來設定batch size的大小以及迭代的epoch輪數。

Tensorflow Dataset是Estimator和Keras Model的輸入格式。

Tensorboard

Tensorboard 是Tensorflow中提供的可視化工具。

它不僅可以可視化模型試驗過程中模型的metrics,如accuracy,loss等;它還可以可視化計算圖中的節點和邊;同時它還可以可視化圖片,可視化降維后embedding的低維空間等。

值得提的一點是,不僅Tensorflow可以使用Tensorboard進行可視化,像Pytorch等也可以使用它做可視化。

TfDebug

TfDebug還是Tensorflow1.x版本中的一個工具,現在在Tensorflow 2.x的文檔中中已經沒有了它的身影。

在Tensorflow1.x靜態圖模式下,只有在計算圖真正執行的時候才能獲取Tensor的值,而不能在Tensor定義的地方獲取它的值。

那是一段痛苦的記憶,那個時候只有通過Tfdebug這個工具,才能進行debug,既麻煩低效又痛苦。

現在Tensorflow2.x版本中,默認是動態圖方式,debug非常方便,TfDebug也就再也用不到了^_^ 。

Tensorflow中GPU的使用

在這里要提一個在Tensorflow中使用GPU的好習慣。

Tensorflow默認會對GPU卡全部占用,即使是執行很少的運算。而如果這塊卡被一個人全部占用,那么其他人就得不到使用。

因此在使用gpu的時候,一定要進行以下設置:

可以使用tf.test.is_gpu_avaibalbe() 來查看當前gpu是否可用,如果不可用,要檢查下是否是gpu驅動沒有安裝,以及是否沒有安裝Tensorflow-gpu。

可以使用 os.environ['CUDA_VISIBLE_DEVICES'] = 0,1 來進行gpu卡的選擇。


我們會在下一篇文章中完成剩下的Tensorflow綜述部分。

總結

以上是生活随笔為你收集整理的tensorflow gpu利用率低_「动手学习Tensorflow」- Tensorflow综述I的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。