2022年6月1日 星期三

PyTorch 線上課程筆記 : 機器學習與深度學習 (三)

今天繼續我的 PyTorch 線上學習, 本系列之前的筆記參考 :


課程筆記摘要如下 (在 Colab 中練習) :
  1. 匯入 torch 套件 : 
    Colab 已經內建 PyTorch (注意, 套件名稱為 torch 而非 pytorch), 不需要安裝, 可用 !pip show torch 檢查目前的版本 :

    !pip show torch


    可見目前是 1.11 版. 這樣就可以直接匯入 torch 套件 :

    import torch 

  2. 呼叫 torch.empty() 建立一個空張量 : 
    呼叫 torch.empty(列數, 行數 [dtype]) 即可建立一個內容為空的張量, 注意, 傳入的前兩個為代表陣列列數 (row) 與行數 (column) 之整數 :

    x=torch.empty(53) # 建立一個 5 列 3 行的空張量
    print(x)


    顯示 x 裡面並非為空, 因 empty() 其實只是不初始化內容而已, 所以裡面是記憶體的殘留資料. 也可以將列與行放在一個 tuple 或 list 中傳入 : 

    torch.empty((53))


    torch.empty([53])


    以下所有建立張量之函式, 其 size 皆是如此.

  3. 呼叫 torch.rand() 建立一個均勻分布的隨機張量 : 
    呼叫 torch.rand(列數, 行數) 即可建立一個內容為 0~1 均勻分佈的張量 :

    torch.rand(53)


  4. 呼叫 torch.zeros() 建立一個零張量 :
    可以傳入 dtype 參數指定內容之資料型態 :

    torch.zeros(53dtype=torch.long)


    也可以傳入 float16, float32, float64 (=double) 指定為浮點數 :

    torch.zeros(53, dtype=torch. float64)


    可見值同樣是 0, 浮點數類型者後面都帶一個小數點. 

  5. 呼叫 torch.ones() 建立一個壹張量 :

    torch.ones(53, dtype=torch. float64)



  6. 呼叫 torch.Tensor() 建立張量 : 
    可以傳入以串列或 tuple 表示的向量或矩陣 :

    torch.Tensor([53])
    torch.Tensor((53))

    注意, 這裡傳入 torch.Tenso() 的 [5, 3] 或 (5, 3) 是內容而非 size. 另外, 呼叫小寫的 torch.torch() 也可以. 這些內容必須同質, 例如全部是整數, 或全部是浮點數, 不可以夾雜 (異質).

  7. 檢查張量的尺寸 (size) : 
    可以呼叫 Tensor 物件的 size() 方法檢視張量之尺寸, 也可以像 Numpy 一樣用 shape 屬性 :

    x=torch.tensor([5.03])
    print(x)
    x.size()
    x.shape

    可見結果一樣, 都是傳回 Size 物件. 

  8. 呼叫已存在的 Tensor 物件的 new_ones() 方法建立壹陣列 :

    x=x.new_ones(53, dtype=torch.double)
    print(x)


    可見原本的張量物件 x 被取代了.  

  9. 呼叫 torch.randn_like() 依據已知張量物件尺寸建立隨機張量 :

    x=torch.randn_like(x, dtype=float)
    print(x)


    此處是在依照原張量 x 的尺寸建立一個常態分布 (平均值=0, 標準差=1) 的隨機張量. 

沒有留言 :