《动手学深度学习 PyTorch版》学习笔记(一):数据操作
一、數(shù)據(jù)操作
在PyTorch中,torch.Tensor是存儲(chǔ)和變換數(shù)據(jù)的主要工具。
"tensor"這個(gè)單詞一般可譯作“張量”,張量可以看作是一個(gè)多維數(shù)組。 標(biāo)量可以看作是0維張量,向量可以看作1維張量,矩陣可以看作是二維張量。1、torch.arange() 和torch.linspace
# arange(s, e, step) => 從s到e,步長(zhǎng)為step x8 = torch.arange(1, 10, 2) # print(x8)# linspace(s, e, steps) => 從s到e,均勻切分成steps份 x9 = torch.linspace(2,8,3) # print(x9)2、torch.range() 和torch.arange() 的區(qū)別
>>> y=torch.range(1,6) >>> y tensor([1., 2., 3., 4., 5., 6.]) >>> y.dtype torch.float32>>> z=torch.arange(1,6) >>> z tensor([1, 2, 3, 4, 5]) >>> z.dtype torch.int643、torch.randn與torch.rand的區(qū)別
randn
torch.randn(*sizes, out=None) → Tensor返回一個(gè)包含了從標(biāo)準(zhǔn)正態(tài)分布中抽取的一組隨機(jī)數(shù)的張量
size:張量的形狀
out:結(jié)果張量
rand
torch.rand(*sizes, out=None) → Tensor返回一個(gè)張量,包含了從區(qū)間[0, 1)的均勻分布中抽取的一組隨機(jī)數(shù)
4、NumPy數(shù)組與Tensor的互相轉(zhuǎn)換(共享內(nèi)存)
NumPy轉(zhuǎn)Tensor:torch.from_numpy()
Tensor轉(zhuǎn)NumPy:numpy()
另:可以使用 torch.tensor() 將NumPy數(shù)組轉(zhuǎn)換成Tensor,但不再共享內(nèi)存
5、Tensor on GPU
if torch.cuda.is_available():device = torch.device("cuda") # GPUy = torch.ones_like(x, device=device) # 直接創(chuàng)建一個(gè)在GPU上的Tensorx = x.to(device) # 等價(jià)于 .to("cuda")z = x + yprint(z)print(z.to("cpu", torch.double)) # to()還可以同時(shí)更改數(shù)據(jù)類型6、索引
索引出來(lái)的結(jié)果與元數(shù)據(jù)共享內(nèi)存
x = torch.tensor([[1, 2, 3], [4, 5, 6]]) print(x) y = x[0, :] # 取出第一行 print(y) y += 1 print(y) print(x[0, :]) # 源tensor也被改了輸出
tensor([[1, 2, 3],[4, 5, 6]]) tensor([1, 2, 3]) tensor([2, 3, 4]) tensor([2, 3, 4])7、廣播機(jī)制
當(dāng)對(duì)兩個(gè)形狀不同的Tensor按元素運(yùn)算時(shí),可能會(huì)觸發(fā)廣播(broadcasting)機(jī)制:先適當(dāng)復(fù)制元素使這兩個(gè)Tensor形狀相同后再按元素運(yùn)算
x = torch.arange(1, 3).view(1, 2) print(x) y = torch.arange(1, 4).view(3, 1) print(y) print(x + y)輸出
tensor([[1, 2]]) tensor([[1],[2],[3]]) tensor([[2, 3],[3, 4],[4, 5]]) 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的《动手学深度学习 PyTorch版》学习笔记(一):数据操作的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 成员变量、局部变量、实例变量、静态变量、
- 下一篇: 《动手学深度学习》第一天 (2.1+2.