iT邦幫忙

2022 iThome 鐵人賽

DAY 4
0
AI & Data

【30天之新手學習筆記】PyTorch系列 第 4

Day 04 - 張量(Tensor)的介紹與操作

  • 分享至 

  • xImage
  •  

許多深度學習的應用中,都是將一種特定類型的輸入資料,透過模型的轉換產生另一種類型的結果,例如:輸入一張圖片,輸出標籤及信心分數,上述的例子可以特過專家們以訓練好的resnet這個模型來達成,我們運用起來十分方便的模型,其實在處理大量輸入的資料時都會將它轉換成浮點數,方便電腦去進行計算與處理.

張量(Tensor)

張量就像是一個容器,就好比我們要從水龍頭取一些水去煮沸成飲用水,那我們一定會找一個水壺去盛水,而我們要將輸入的資料轉換成浮點數前,則必須準備好張量(即PyTorch中的容器),而張量是用來表示純量,向量,矩陣多維資料的資料結構或容器.

Python串列 v.s PyTorch張量

Python的串列是直接寫出串列中所有元素的值,再利用索引的方式去讀取,修改元素.

In:
a = [2.0, 3.0, 5.0, 7.0, 8.0]
#這裡有五個元素,而索引值則是0到4

In:
a[4]
Out:
8.0
#透過索引值4,取得第4個元素

In:
a[2] = 9.0
a
Out:
[2.0, 3.0, 9.0, 7.0, 8.0]
#利用索引值修改特定元素

PyTorch的張量則是利用torch模組創建一個張量,再利用索引來提取元素或修改.

In:
import torch
a = torch.zeros(3)
a
Out:
tensor([0., 0.,0.])
#建立一個元素皆為0的3維一軸張量

In:
a[2]
Out:
tensor(0.)
#印出索引值為2的元素

In:
a[1] = 9.0
a
Out:
tensor([0., 9., 0.])
#修改張量中索引值為1的元素值

從上面的程式碼來看PyTorch的張量與Python的串列看起來並沒有太大的差異,但事實上張量與串量在記憶體中的配置是截然不同的,串列在記憶體空間中是獨立區塊的Python物件,而張量則能看成是記憶體空間中一個連續區塊,而這個連續區塊中的每一個元素都是32位元的浮點數.


上一篇
Day 03- 人工智慧?機器學習?深度學習?
下一篇
Day 05 - 將圖片資料利用張量表示
系列文
【30天之新手學習筆記】PyTorch30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言