最近在學習Pytorch,在這里分享一些心得,其實如果也是入門的朋友可以直接參考我的這一個系列,因為比較接地氣。Pytorch的安裝我們這里忽略,
畢竟也不是什么難事。這一講我們大概說一下Pytorch的Tensor,就像numpy的ndarray(如果你有接觸過numpy),Tensor是Pytorch里面的主要操作
的數據形式,中文叫做張量,就是維度大於2的量。比如矩陣是二維,向量是一維,而張量就是三維以上了。下面話不多說直接就着代碼和注釋來理解吧同學們:
import torch
import numpy as np
'''
tensor 張量的一些操作
'''
a = torch.empty(5,3) # 構造一個5*3的矩陣 並且不初始化
a = torch.rand(5,3) # 均勻分布 0-1
a = torch.randn(5,3) # 連續標准正態分布 期望為0 方差為1
a = torch.zeros(5,3) # 全為0的矩陣
a = torch.tensor([[1,2,3],[4,5,6],[7,8,9]], dtype=torch.int) # 可以直接使用python的list來進行初始化
b = a.new_ones(2,2) # b繼承了a的元素屬性類型 等 new_ + 各種其他初始化函數都可以變成一個這樣的函數
b = torch.rand_like(a,dtype=torch.float) # _like 繼承形狀
'''
tensor 和 numpy之間的一些聯系
'''
a = torch.eye(5,dtype=torch.int32)
b = a.numpy()
c = torch.from_numpy(b)
b += 1 # b + 1 操作之后會發現三個變量a b c全都變化了 說明其實她們公用的一塊內存 以后操作時應該警惕
'''
tensor 的一些變化操作
'''
a = torch.rand(4,4)
b = a.view(-1,2) # view操作重整tensor的形狀 -1是默認值的意思 計算機會根據2算出-1的地方應該是8(因為a有16個元素)
c = torch.ones_like(a)
d = a + c # 基本運算有 + - * / **k
d = torch.add(a,c)
d = torch.empty_like(a)
d = torch.add(a,c,out=d)
c.add_(a) # 這個比較特殊 是 把 a 加給 c
'''
對tensor簡單的切片處理
'''
a = torch.tensor([[[1,2,3],[4,5,6],[7,8,9]],[[1,2,3],[1,2,3],[1,2,3]],[[1,2,3],[1,2,3],[1,2,3]]]) #定義一個三維張量
b = a[:,:,1] # 這個該怎么理解呢 就是 消除第三層的中括號 怎么消除呢 就要把 第三層每個里面index為1的挑出來變成個序列
print(a.size())
print(a)
print(b)