Pytorch個人心得(一)-----Tensor基本使用


最近在學習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)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM