中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

什么是TensorFlow

發布時間:2021-09-29 16:44:53 來源:億速云 閱讀:143 作者:iii 欄目:大數據

這篇文章主要介紹“什么是TensorFlow”,在日常操作中,相信很多人在什么是TensorFlow問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”什么是TensorFlow”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

簡介

機器學習在全球范圍內越來越受歡迎和使用。 它已經徹底改變了某些應用程序的構建方式,并且可能會繼續成為我們日常生活中一個巨大的(并且正在增加的)部分。 沒有什么包裝且機器學習并不簡單。 它對許多人來說似乎非常復雜并常常令人生畏。 像谷歌這樣的公司將自己的機器學習概念與開發人員聯系起來,在谷歌幫助下讓他們逐漸邁出第一步,故TensorFlow的框架誕生了。

TensorFlow為何物?

TensorFlow是由谷歌使用Python和C++開發的開源機器學習框架。 它可以幫助開發人員輕松獲取數據,準備和訓練模型,預測未來狀態,以及執行大規模機器學習。 有了它,我們可以訓練和運行深度神經網絡的內容,諸如光學字符識別,圖像識別/分類,自然語言處理等。

張量與操作

TensorFlow基于計算圖,你可以將其想象為具有節點和邊的經典圖。 每個節點被稱為操作,它們將零個或多個張量輸入并產生零個或多個張量輸出。 操作可以非常簡單,例如基本的添加,但它們也可以非常復雜。 張量被描繪為圖的邊緣,并且是核心數據單元。 當我們將它們提供給操作時,我們在這些張量上執行不同的功能。 它們可以具有單個或多個維度,有時也稱為它們的等級(標量:等級0,向量:等級1,矩陣:等級2)。 這些數據受到操作的影響通過張量傳遞到計算圖中,故而稱為TensorFlow。 張量可以以任意數量的維度存儲數據,并且有三種主要類型的張量:占位符,變量和常量。

安裝TensorFlow

使用Maven,安裝TensorFlow就像包含依賴項一樣簡單:

<dependency>
  <groupid>org.tensorflow</groupid>
  <artifactid>tensorflow</artifactid>
  <version>1.13.1</version>
</dependency>

如果你的設備支持GPU功能,可以添加以下依賴:

<dependency>
  <groupid>org.tensorflow</groupid>
  <artifactid>libtensorflow</artifactid>
  <version>1.13.1</version>
</dependency>

<dependency>
  <groupid>org.tensorflow</groupid>
  <artifactid>libtensorflow_jni_gpu</artifactid>
  <version>1.13.1</version>
</dependency>

你可以使用TensorFlow對象來檢查當前操作的TensorFlow的版本。

System.out.println(TensorFlow.version());

TensorFlow的JavaAPI

Java API TensorFlow提供包含在org.tensorflow包中。 它目前是實驗性的,因此不能保證其穩定性。 需要注意的是TensorFlow唯一完全支持的語言是Python,Java API幾乎沒有什么功能。 API向我們介紹了新的類,接口,枚舉和異常。

通過API引入的新類是:

  • Graph:表示TensorFlow計算的數據流圖;

  • Operation:在Tensors上執行計算的Graph節點;

  • OperationBuilder:Operations的構建器類;

  • Output<t>:操作產生的張量的符號句柄;

  • SavedModelBundle:表示從存儲加載的模型;

  • SavedModelBundle.Loader:提供加載SavedModel的選項;

  • Server:進程內TensorFlow服務器,用于分布式訓練;

  • Session:圖形執行的驅動程序;

  • Session.Run:輸出執行會話時獲得的張量和元數據;

  • Session.Runner:運行操作并評估張量;

  • Shape:由操作產生的可能部分已知的張量形狀;

  • Tensor<t>:靜態類型的多維數組,其元素是由T描述的類型;

  • TensorFlow:描述TensorFlow運行時的靜態實用程序方法;

  • Tensors:用于創建張量對象的類型安全工廠方法;

枚舉
  • DataType:將張量中的元素類型表示為枚舉;

接口
  • Operand<t>:由TensorFlow操作的操作數實現的接口;

異常
  • TensorFlowException:執行TensorFlow圖時拋出的未經檢查的異常

如果我們將所有這些與Python中的tf模塊進行比較將發現存在明顯的區別。 Java API沒有幾乎相同的功能,至少目前如此。

圖(Graphs)

如前所述,TensorFlow基于計算圖 - 其中org.tensorflow.Graph是Java的實現。 注意:它的實例是線程安全的,盡管我們需要在完成它之后顯式釋放Graph使用的資源。

讓我們從一個空圖開始:

Graph graph = new Graph();

該對象是空的,所以這個圖表意義不大。 要對它做任何操作,我們首先需要使用Operations加載它。 我們使用opBuilder()方法來加載它,它返回一個OperationBuilder對象,一旦我們調用.build()方法,它就會將操作添加到我們的圖形中。

常量

讓我們在圖表中添加一個常量:

Operation x = graph.opBuilder("Const", "x")
               .setAttr("dtype", DataType.FLOAT)
               .setAttr("value", Tensor.create(3.0f))
               .build();
占位符

占位符是變量的“類型”,聲明時沒有賦值,他們的值將在之后進行分配。 這允許我們使用沒有任何實際數據的操作來構建圖形:

Operation y = graph.opBuilder("Placeholder", "y")
        .setAttr("dtype", DataType.FLOAT)
        .build();
函數

最后為了解決這個問題,我們需要添加某些函數。 這些可以像乘法,除法或加法一樣簡單,也可以像矩陣乘法一樣復雜。 和之前一樣,我們使用.opBuilder()方法定義函數:

Operation xy = graph.opBuilder("Mul", "xy")
  .addInput(x.output(0))
  .addInput(y.output(0))
  .build();

注意:我們使用input(0)作為張量可以有多個輸出。

圖形可視化

遺憾的是,Java API還沒有包含任何允許像Python中一樣可視化圖形的工具。

會話(Sessions)

如前所述,Session是Graph的驅動程序。 它封裝了執行Operation和Graph計算張量(tensors)的環境。 這意味著我們構建的圖(graph)中的張量(tensors)實際上并沒有任何值,因為我們沒有在會話(session)中運行圖形(graph)。 我們首先將圖表添加到會話(session)中:

Session session = new Session(graph);

我們的操作知識簡單地將x于y相乘,為了運行我們的圖(graph)并得到計算結果,我們需要使用fetch()獲取到xy的操作并為其提供x和y的值:

Tensor tensor = session.runner().fetch("xy").feed("x", Tensor.create(5.0f)).feed("y", Tensor.create(2.0f)).run().get(0);
System.out.println(tensor.floatValue());

運行這段代碼將產生的結果如下:

10.0f

Java當中加載Python中Saving模塊

這可能聽起來有點奇怪,但由于Python是唯一受到良好支持的語言,因此Java API仍然沒有保存模型的功能。 這意味著Java API僅用于服務用例,至少在TensorFlow完全支持之前。 目前至少我們可以使用SavedModelBundle類在Python中訓練和保存模型,然后使用Java加載它們來為它們提供服務:

SavedModelBundle model = SavedModelBundle.load("./model", "serve"); 
Tensor tensor = model.session().runner().fetch("xy").feed("x", Tensor.create(5.0f)).feed("y", Tensor.create(2.0f)).run().get(0);  

System.out.println(tensor.floatValue());

到此,關于“什么是TensorFlow”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

临邑县| 玛多县| 连州市| 云安县| 惠来县| 信阳市| 赤峰市| 达州市| 安吉县| 夏河县| 兰西县| 贵州省| 桃园市| 鄱阳县| 东莞市| 越西县| 高雄市| 应用必备| 治县。| 姚安县| 宿迁市| 新营市| 兰坪| 子洲县| 大厂| 德庆县| 宣威市| 广南县| 盐源县| 芦溪县| 乌审旗| 山阳县| 都昌县| 屏东县| 宜城市| 河东区| 甘肃省| 仙桃市| 合作市| 西平县| 贡觉县|