pytorch0.4更新
Tensor/Variable合并
tensor可以直接反向求導(dǎo)。需要設(shè)置requires_grad屬性為True
計(jì)算梯度時(shí)候纤怒,X輸入需要設(shè)定require屬性糯而,y輸出無需設(shè)置。兩個(gè)均為tensor格式肪跋。
tensor的梯度計(jì)算不會(huì)浪費(fèi)歧蒋,比如w=a+b土砂,a的grad為True州既,b的grad為False,那么a.grad進(jìn)行計(jì)算萝映,b.grad為none
tensor.requires_grad_()可以把requires_grad設(shè)置為True
tensor.data()可以獲取內(nèi)容吴叶,但是修改內(nèi)容不會(huì)被grad跟蹤,如果用tensor.detach()獲得數(shù)據(jù)序臂,可以被grad跟蹤
增加了零維度的tensor蚌卤,最為常見的是loss,不再是variable數(shù)據(jù)奥秆,而是零維度的tensor
tensor.itrm()可以提取tensor里面的數(shù)據(jù)逊彭。item只適合單一數(shù)字。比如零維度tensor
CUDA的加入
函數(shù)后面加入.cuda()
torch.device('cuda')用來設(shè)定使用cpu還是gpu构订,例如
????device=torch.device("cuda"if use_cudaelse"cpu")
? ? model=MyRNN().to(device)
畫圖相關(guān)
畫圖時(shí)候先要將GPU數(shù)據(jù)放入CPU??torch.Tensor.cpu()
然后tensor轉(zhuǎn)為numpy數(shù)據(jù)? tensor.numpy()
dropout
訓(xùn)練反響傳遞時(shí)候開啟dropout侮叮,預(yù)測(cè)時(shí)候關(guān)閉dropout
自定義數(shù)據(jù)
數(shù)據(jù)可以自定義,通過Data.TensorDataset(x,y)進(jìn)行打包悼瘾,x為訓(xùn)練數(shù)據(jù)囊榜,y為訓(xùn)練標(biāo)簽。
再通過Data.DataLoder進(jìn)行batch分散亥宿。
x的形式可以是a(樣本數(shù)量)*b(數(shù)據(jù)1)*c(數(shù)據(jù)2)*d(數(shù)據(jù)3)
y的形式是a(樣本數(shù)量)