日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

pytorch教程龙曲良06-10

發布時間:2024/4/13 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pytorch教程龙曲良06-10 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

06手寫數字識別1

每張圖片2828

針對y=wx+b
對于手寫數字圖片來說可以用灰度0-1表示,所以就是2828值在0-1的矩陣,然后打平變成784的向量

y的維度怎么表示
法1先討論H1,H2,H3的維度,以下都表示維度,Hi不斷作為Hi+1的一個輸入,如[1,784]表示一行784列,但這樣h1,h2…h9存在大小關系,沒有相關性 ,

07手寫數字識別02

法2用one-hot去表示概率,
1=[0,1,0,0,0,0,0,0,0,0]
3=[0,0,0,1,0,0,0,0,0,0]

求loss 歐式距離 (pred-Y)**2使得這個10維矩陣差最小


𝑝𝑟𝑒𝑑 = 𝑊3 ? {𝑊2 [𝑊1𝑋 + 𝑏1] + 𝑏2} + 𝑏3
這樣還是可以優化成wx+b的形式,還是線性的,所以我們在每層加激活函數(sigmod function)變成非線性的,這樣表達能力就增強了

目標是:求和(pred-Y)**2最小,找到對于任意一個x都滿足目標的w和b

y_pred是一個[1,10]的矩陣,[0.1, 0.8, 0.01, 0, 0.02, …]
而真實的y是[0, 1, 0, 0, 0, …]
p(0|x)=0.1表示給定一個新的x,它的標簽是數字0的概率是0.1 p(1|x)=0.8表示給定一個新的x,它的標簽是數字0的概率是0.8

max(pred)就是找到最大值0.8
argmax(pred)就是找到0.8的標簽索引,label=1,我們希望max(pred)與真實值1越接近越好,這樣就可以直接拿出他對應的標簽

08基本數據類型1


怎么表示string:
One – hot
? [0, 1, 0, 0, …]
缺少語義相關性,而且矩陣洗漱
? Embedding
? Word2vec
? glove


byteTensor比較tensor的大小,返回的0和1
三個重要的Tensor

FloatTensor IntTensor ByteTensor

Type check

randn(random normal distribution)是一種產生標準正態分布()的隨機數或矩陣的函數。randn是均值為0方差為1的正態分布,返回一個n*n的隨機項的矩陣.
[2,3]兩行三列

一般檢驗用的是
a.type()和isinstance(a,torch.FloatTensor)

數據一樣但是位置不同類型不同
data一開始放在cpu上就會false,搬到gpu就true

對于標量直接放入數字即可,產生的就是維度為0的tensor,因為求出的loss就是標量

怎么檢查dim=0

a.shape len(a.shape) a.dim() a.size()


dim=1 維度為1,即vector,dim=1的tensor常常用于計算bias和linear input

torch.tensor([1.1])#是指定數字的一個一維向量 torch.tensor([1.1,2.2])#是指定兩個數字的一個一維向量 torch.FloatTensor(1)#是隨機的一個長度為1的一維向量 torch.FloatTensor(2)#是隨機的一個長度為21的一維向量,向量中兩個數 data=np.ones(2)#隨機的一個長度為2的一維向量 torch.from_numpy(data)#數字沒變,但是數據類型變成了from_numpy

在pt0.3版本以前沒有dim=0的存在,loss=0.3打印出的是[0.3]表示的是dim=1的一維向量,雖然一個數字的一維向量可以表示向量,但是不好區別
0.3版本以后才是打印出0.3標量
完全區分了標量和向量

怎么得到dim=1的shape或者size:a.shape

區別dim,shape,size
dim是指維度,(類比一維數組)
size/shape指的是dim的長度/形狀(元素長度)
tensor指的是具體的矩陣

09數據類型02

dim=2

a=torch.randn(2,3)#或者FloatTensor(2,3) 兩行三列的矩陣 a.size(0)#返回第一個維度長度 a.size(1)#返回第二個維度長度

適用于Linear Input batch
比如有4張784維的照片,即寫成[4,784]
dim=2,shape=[ 4,784]
(4行784列,每行代表一張圖片)

dim=3
適用于RNN input Batch,比如每一句話10個單詞,每個單詞用100維的one-hot編碼,一句話表示為:[word,features] [10,100]
如果多句話,每次送20句話,batch=20,20句sentence,[word,batch,features] [10,20,100]

rand()是0-1的均勻隨機分布

a=torch.rand(1,2,3) #因為第一個維度是1,所以一個【】,兩個[],[]內三個元素A,B,C #tensor([【[A,B,C],[E,D,F]】]) #([[[A,B,C],[E,D,F]]])dim=3,首尾分別跟著三個[和]a[0]#返回的是第一個元素的第一個元素就是維度為[2,3]的tensor([[A,B,C],[E,D,F]])

dim=4適用于cnn,圖片,[b,c,h,w]即[batch,channel,height,width]

[2,3,28,28]#表示2張圖片(batch=2),通道數為3則為彩色圖片(RGB),通道數為1是灰色圖片,28,28分別表示圖片的長和寬


numel就是"number of elements"的簡寫。numel()可以直接返回int類型的元素個數

10創建Tensor01

1import from numpy使用torch.from_numpy

a=np.array([2,3.3]) #創建一個dim=1,長度為2的向量,最左邊只跟了一個[ torch.from_numpy(a)a=no.ones([2,3])#創建一個所有元素都是1的兩行三列的矩陣 torch.from_numpy(a)

2import from list

注:
torch.tensor()#接收的指定的元素的值
torch.Tensor()和torch.FloatTensor()#接受的是shape數據的維度
比如torch.Tensor(2,3)創建一個兩行三列的tensor,但是有時候Tensor也可以接收指定數據,但是要用[]list括起來,比如torch.Tensor([2.,3.2])創建的是一個一維度向量,tensor([2.0000,3.2000])
但是為了不混淆,
一般用小寫tensor接受具體數據torch.tensor([A,B,C]),一般用大寫Tensor 接受shape,torch.Tensor(d1,d2,d3)

uninitialized

創建了一片空間不希望初始化

Torch.empty()#接受的是shape torch.FloatTensor(d1,d2,d3)a=torch.FloatTensor([1,2]) b=torch.tensor([1,2]) c=torch.Tensor([1,2]) print(a) print(b) print(c) ''' tensor([1., 2.]) tensor([1, 2]) tensor([1., 2.])'''


未初始化的數據沒有規則,很大或者很小,之后不給未初始化的數據賦值可能會報錯,torch.nan或者torch.inf

不設置的話默認是FloatTensor類型
當設置為DoubleTensor時候,輸入

torch.tensor([1,1])#一行兩列dim=1torch.Tensor(2,3)#兩行三列 dim=2

他們的類型會自動轉化為DoubleTensor

隨機初始化

rand:值在[0,1]之間,接收的是shape rand_like:接收的是tensor,相當于把a.shape讀出來再送給rand函數
randint:值在我們指定的[min,max)之間,
torch.randint(min,max,shape)
如torch.randint(1,10,[3,3])

總結

以上是生活随笔為你收集整理的pytorch教程龙曲良06-10的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。