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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

TensorFlow编程结构

發布時間:2023/11/28 生活经验 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 TensorFlow编程结构 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

TensorFlow編程結構
TensorFlow 與其他編程語言非常不同。
首先通過將程序分為兩個獨立的部分,構建任何擬創建神經網絡的藍圖,包括計算圖的定義及其執行。起初這對于傳統程序員來說看起來很麻煩,但是正是圖定義和執行的分開設計讓 TensorFlow 能夠多平臺工作以及并行執行,TensorFlow 也因此更加強大。
計算圖:是包含節點和邊的網絡。本節定義所有要使用的數據,也就是張量(tensor)對象(常量、變量和占位符),同時定義要執行的所有計算,即算子操作對象(Operation Object,簡稱 OP)。
每個節點可以有零個或多個輸入,但只有一個輸出。網絡中的節點表示對象(張量和算子操作),邊表示算子操作之間流動的張量。計算圖定義神經網絡的藍圖,但其中的張量還沒有相關的數值。

為了構建計算圖,需要定義所有要執行的常量、變量和算子操作。常量、變量和占位符將數學算子操作將在矩陣算子章節中詳細討論。
用一個簡單的例子描述程序結構——通過定義并執行計算圖來實現兩個向量相加。
計算圖的執行:使用會話對象來實現計算圖的執行。會話對象封裝了評估張量和操作對象的環境。這里真正實現了算子操作并將信息從網絡的一層傳遞到另外一層。不同張量對象的值僅在會話對象中被初始化、訪問和保存。在此之前張量對象只被抽象定義,在會話中才被賦予實際的意義。

具體做法
通過以下步驟定義一個計算圖:

  1. 在此以兩個向量相加為例給出計算圖。假設有兩個向量 v_1 和 v_2 將作為輸入提供給 Add 操作。建立的計算圖如下:

  2. 定義該圖的相應代碼如下所示:

  3. 然后在會話中執行這個圖:

  4. 以上兩行相當于下面的代碼。上面的代碼的優點是不必顯式寫出關閉會話的命令:

  5. 運行結果是顯示兩個向量的和:
    {3 3 8 7}
    請記住,每個會話都需要使用 close() 來明確關閉,而 with 格式可以在運行結束時隱式關閉會話。
    解讀分析
    計算圖的構建非常簡單。添加變量和操作,并按照逐層建立神經網絡的順序傳遞它們(讓張量流動)。TensorFlow 還允許使用 with tf.device() 命令來使用具有不同計算圖形對象的特定設備(CPU/GPU)。在例子中,計算圖由三個節點組成, v_1 和 v_2 表示這兩個向量,Add 是要對它們執行的操作。
    接下來,為了使這個圖生效,首先需要使用 tf.Session() 定義一個會話對象 sess。然后使用 Session 類中定義的 run 方法運行它,如下所示:
    run(fetches,feed_dict=None,options=None,run_metadata)
    算子結果的值在 fetches 中提取;在示例中,提取的張量為 v_add。run 方法將導致在每次執行該計算圖的時候,都將對與 v_add 相關的張量和操作進行賦值。如果抽取的不是 v_add 而是 v_1,那么最后給出的是向量 v_1 的運行結果:
    {1,2,3,4}
    此外,一次可以提取一個或多個張量或操作對象,例如,如果結果抽取的是 [v_1…v_add],那么輸出如下:
    {array([1,2,3,4]),array([2,1,5,3]),array([3,3,8,7])}
    在同一段代碼中,可以有多個會話對象。
    拓展閱讀
    為什么必須編寫這么多行的代碼來完成一個簡單的向量加,或者顯示一條簡單的消息。其實你可以利用下面這一行代碼非常方便地完成這個工作:
    print(tf.Session().run(tf.add(tf.constant([1,2,3,4]),tf.constant([2,1,5,3]))))
    編寫這種類型的代碼不僅影響計算圖的表達,而且當在 for 循環中重復執行相同的操作(OP)時,可能會導致占用大量內存。養成顯式定義所有張量和操作對象的習慣,不僅可使代碼更具可讀性,還可以幫助你以更清晰的方式可視化計算圖。

注意,使用 TensorBoard 可視化圖形是 TensorFlow 最有用的功能之一,特別是在構建復雜的神經網絡時。構建的計算圖可以在圖形對象的幫助菜單下進行查看。
使用 Jupyter Notebook 或者 Python shell 進行編程,使用 tf.InteractiveSession 將比 tf.Session 更方便。InteractiveSession 使自己成為默認會話,因此你可以使用 eval() 直接調用運行張量對象而不用顯式調用會話。下面給出一個例子

總結

以上是生活随笔為你收集整理的TensorFlow编程结构的全部內容,希望文章能夠幫你解決所遇到的問題。

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