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

歡迎訪問 生活随笔!

生活随笔

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

pytorch

深度学习(5)TensorFlow基础操作一: TensorFlow数据类型

發布時間:2023/12/15 pytorch 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深度学习(5)TensorFlow基础操作一: TensorFlow数据类型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

深度學習(5)TensorFlow基礎操作一: TensorFlow數據類型

  • Data Container(數據載體)
  • What’s Tensor
  • TF is a computing lib(科學計算庫)
  • 創建不同類型的數據
  • Tensor Property(Tensor屬性)
  • Check Tensor Type(判斷數據類型)
  • Convert(數據類型轉換)
  • bool & int(布爾型和整型數據之間的轉換)
  • tf.Variable(可以優化參數的一種數據類型)
  • To numpy(如何將數據由tensor類型轉換為numpy類型)

Data Container(數據載體)

(1) list
優點: 非常靈活,在list中間可以添加任何類型的數據,例如: [1, 1.2, ‘Hello’, (1, 2), layers, …],而且可以隨意添加刪除編輯;
缺點: 遇到大數據時,例如一張圖片維度是[224, 224],那么使用list所消耗的內存空間是巨大的,而且讀取寫入的效率低;
(2) np.array
優點: 專門解決同類型數據運算而設計的數據載體,可以很方便地將大數據(例如一組圖片的維度是[64, 224, 224, 3])進行存儲和運算;
缺點: Numpy是在深度學習出現之前就已經設計好的科學計算庫,所以它不能很好地支持GPU計算或者自動求導功能;
(3) tf.Tensor
與Numpy地位相等,添加了一些深度學習的方法和工具; 更加偏向于神經網絡方面的操作,為了更好地入門,其API設計與Numpy的API設計相近;

What’s Tensor

  • scalar: 1.1
    標量; dim = 0;
  • vector: [1.1], [1.1, 2.2, …]
    向量; dim = 1;
  • matrix: [[1.1, 2.2], [3.3, 4.4], [5.5, 6.6]]
    矩陣; dim = 2; [1.1, 2.2]、[3.3, 4.4]、[5.5, 6.6]均是作為一行存在;
  • tensor: rank>2rank>2rank>2
    其實所有數據都可以叫做tensor,不只是維度大于2的數據,scalar、vector、matrix都可以叫做tensor,但是常見實戰時各叫各的,方便區分,這樣解釋是為了方便理解tensor。
    Tensor Flow in Graph

TF is a computing lib(科學計算庫)

  • int(整型數據),float(單精度浮點型數據),double(雙精度浮點型數據)
  • bool(布爾類型數據)
  • string(字符串類型數據)

創建不同類型的數據

tf.constant()為創建一個Tensor;

Tensor Property(Tensor屬性)

(1) tf.device(“cpu”): 指定創建的數據在CPU上計算;
tf.device(“gpu”): 指定創建的數據在GPU上計算;
注: 如果a和b都在CPU或者都在GPU上是可以一起運算的,但是如果a在CPU上而b在GPU上,或者a在GPU而b在CPU上時,是不可以一起運算的,需要進行CPU/GPU轉換
(2) aa = a.gpu(): 將a由在CPU計算轉換為在GPU計算并賦值給aa;
bb = b.cpu: 將b由在GPU計算轉換為在CPU計算并賦值給bb;
(3) b.numpy(): 將b由tensor數據類型轉換為numpy數據類型;
(4) b.ndim(): 返回b的維度;
(5) b.shape(): 返回b的結構;
(6) tf.rank(): 返回tensor類型數據的維度;
(7) b.name: 無需理解,為TensorFlow1.0版本的起名問題;

Check Tensor Type(判斷數據類型)

(1) tf.is_tensor(b): 判斷b是否為tensor類型的數據;
(2) a.dtype: 返回a的數據類型;
(3) a.dtype = tf.float32: 查看a的數據類型是否為tensor數據類型中的float32;

Convert(數據類型轉換)

(1) a = np.arange(5): 創建a,默認存儲的數據類型為int64;
(2) aa = tf.convert_to_tensor(a): 將a轉換為tensor類型的數據,轉換后數據類型保持不變,依然為int64;
(3) aa = tf.convert_to_tensor(a, dtype = tf.int32): 將a轉換為tensor類型的數據,并且改變a的數據類型為int32;
(4) tf.cast(aa, dtype = tf.float32): cast是一個專業的數據類型轉換工具,將aa由int32轉換為float32;

bool & int(布爾型和整型數據之間的轉換)

在計算時我們往往會將布爾類型的數據轉換為整型數據,方便計算,因此,布爾型和整型數據之間的相互轉換非常常見。

(1) tf.cast(b, dtype = tf.bool): 將b由整型數據轉換為布爾型數據。其中,0轉換為False,1轉換為True;
(2) tf.cast(b, dtype = tf.bool): 將bb由布爾型數據轉換為整型數據。其中,False轉換為0,True轉換為1;

tf.Variable(可以優化參數的一種數據類型)

例如: y=w?x+by=w*x+by=w?x+b,這里的wwwbbb都是參數,那么wwwbbb除了是tensor類型的數據以外,還有一個額外的屬性,就是Variable,就是說我們可以認為: w = tf.Variable(w),這樣的話,一個tensor類型的數據經過Variable包裝后,會自動具有了一些可求導的特性,經過包裝后會有name和trainable兩個屬性,其中name屬性無需考慮,是TensorFlow1.0中的概念; trainable屬性是可以訓練的意思,就是說當wwwbbb需要進行向后傳播或者求導的時候,需要trainable這個屬性進行對wwwbbb的跟蹤,會自動記錄wwwbbb的梯度信息。

注: isinstance()并不推薦使用,更推薦使用tf.is_tensor()。

To numpy(如何將數據由tensor類型轉換為numpy類型)

tensor數據一般是運行在GPU上的,我們可能需要在CPU上完成一些額外的控制,所以我們需要將數據由tensor類型轉換為numpy類型。

(1) a.numpy(): 將a轉換為numpy類型的數據;
(2) 如果a是scalar(即標量)數據的話,我們可以直接使用int(a)或者float(a)來對a的數據類型進行轉換;

參考文獻:
[1] 龍良曲:《深度學習與TensorFlow2入門實戰》
[2] https://playground.tensorflow.org

總結

以上是生活随笔為你收集整理的深度学习(5)TensorFlow基础操作一: TensorFlow数据类型的全部內容,希望文章能夠幫你解決所遇到的問題。

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