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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

TensorFlow:实战Google深度学习框架(一)计算、数据、运行模型

發布時間:2023/12/15 pytorch 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 TensorFlow:实战Google深度学习框架(一)计算、数据、运行模型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  • 第3章 TensorFlow入門
    • 3.1 TensorFlow計算模型——計算圖
      • 3.1.1 計算圖的概念
      • 3.1.2 計算圖的使用
    • 3.2 TensorFlow數據模型——張量
      • 3.2.1 張量的概念
      • 3.2.2 張量的使用
    • 3.3 TensorFlow運行模型——會話

第3章 TensorFlow入門

3.1 TensorFlow計算模型——計算圖

計算圖是TF框架中最基本的概念,所有的計算都會被轉化為計算圖上的點,下面詳細介紹計算圖。

3.1.1 計算圖的概念

Tensor——張量,可以理解為多維數組;

Flow——流,體現了計算模型,表達了張量之間通過計算相互轉化的過程;

每個計算都會被轉化為計算圖上的一個節點,節點之間的邊描述了計算之間的依賴關系

3.1.2 計算圖的使用

Tensorflow程序會分為兩個階段:

  • 第一階段需要定義計算圖中的所有計算

  • 第二階段執行計算

函數效果
tf.get_default_graph獲取當前默認的計算圖
tf.Graph生成新的計算圖
tf.Graph_device指定運算設備

計算圖的另一個功能:有效整理TF程序中的資源

通過集合來整合資源:

函數效果
tf.add_to_collection將資源加入一個或多個集合
tf.get_collection獲取一個集合中的所有資源

為方便使用,TF也自動管理了一些常用的集合

集合名稱集合內容使用場景
tf.GraphKeys.VARIABLES所有變量持久化TensorFlow模型
tf.GraphKeys.TRAINABLE_VARIABLES可學習的變量模型訓練、生成模型可視化內容
tf.GraphKeys.SUMMARIES日志生成相關張量TensorFlow計算可視化
tf.GraphKeys.QUEUE_RUNNERS處理輸入的QueueRunner輸入處理
tf.GRaphKeys.MOVING_AVEGAGE_VARIABLES所有計算了滑動平均值的變量計算變量的滑動平均值

3.2 TensorFlow數據模型——張量

張量是TF的數據管理形式

3.2.1 張量的概念

在TF程序中,所有的數據都是通過張量的形式來表示的,從功能角度看,張量可以被理解為多維數組,其中零階張量表示標量(scalar),也就是一個數;一階張量表示向量(vector),也就是也一維數組;n階張量可以理解為n維數組。

張量的實現:并不是直接采用數組的形式,而只是對tensorflow中計算結果的引用。

張量保存的是什么:并不是真正的數字,而是保存如何得到這些數字的計算過程。

張量的屬性:名字(name)、維度(shape)、類型(type)

Tensor("MatMul:0", shape=(1, 1), dtype=int32)
  • 名字:張量的唯一標識符,且說明了張量是如何計算出來的; node:src_output的形式
    • node:節點名稱
    • src_output:當前張量來自第幾個節點的第幾個輸出(MatMul:0表示計算節點“MatMul的第一個結果”)
  • 維度:描述了張量的維度信息(shape=(1, 1)表示該張量是二維數組)
  • 類型:每個張量會有一個唯一的類型(TF會對所有參與運算的張量進行類型檢查,不匹配會報錯)

3.2.2 張量的使用

  • 第一類:對中間結果進行引用,當一個計算包含很多中間結果時,使用張量可以提高代碼可讀性。
a=tf.constant([1.0,2.0],name="a") b=tf.constant([2.0,3.0],name="b") result=a+b
  • 第二類:當計算圖構造完成之后,張量可以用來獲得計算結果,也就是得到真實的數字。

雖然張量本身沒有存儲具體數字,但可以通過會話(session)來得到具體數字

3.3 TensorFlow運行模型——會話

會話(session):執行定義好的運算

會話擁有并管理TensorFlow程序運行時的所有資源,當所有計算完成之后需要關閉會話來回收資源,否則可能出現資源泄露的問題。

會話模式有兩種:

  • 第一種模式:需要明確調用會話生成函數和關閉會話函數(當程序異常退出時,關閉會話函數可能不會執行,導致資源泄露)
# 創建一個會話 sess = tf.Session() # 使用這個創建好的會話得到關心的運算結果 sess.run(result) # 關閉會話 sess.close()
  • 第二種模式:通過Python上下文管理機制
with tf.Session() as sess:sess.run(result) # 當上下文退出時會話關閉,資源可以被釋放。

會話如何生成:指定默認會話(默認會話不會自動生成),通過 tf.Tensor.eval 函數計算張量取值。

run和eval的區別:ecal一次只能得到一個節點的值,run可以得到多個節點的值

sess = tf.Session() with sess.as_default():print(result.eval()) [ 4. 6.]

以下代碼實現相同的功能:

sess = tf.Session()# 下面的兩個命令有相同的功能 print(sess.run(result)) print(result.eval(session = sess))

使用tf.InteractiveSession()構建會話:

通過默認會話的方式獲取張量的取值會更加方便,TensorFlow提供了一種在交互式環境下直接構建默認會話的函數,會自動將生成的會話注冊為默認會話。

sess=tf.InteractiveSession() print(result.eval()) sess.close()

使用ConfigProto Protocol Buffer配置需要生成的會話:

config=tf.ConfigProto(allow_soft_placement=True, log_device_placement=True) sess1 = tf.InteractiveSession(config=config) sess2 = tf.Session(config=config)

allow_soft_placement=True 在下面的任意一個條件成立,GPU的運算可以放到CPU上進行:
運算無法在GPU上執行;
沒有GPU資源(比如運算被指定在第二個GPU上運行,但是機器只有一個GPU);
運算輸入包含對CPU計算結果的引用。
log_device_placement=True日志中將會記錄每個節點被安排在了哪個設備上以方便調試。

總結

以上是生活随笔為你收集整理的TensorFlow:实战Google深度学习框架(一)计算、数据、运行模型的全部內容,希望文章能夠幫你解決所遇到的問題。

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