在寫網絡初始設置的,設置以後,之後創建的tensor都默認爲該形式,cpu或者gpu,類型
torch.set_default_tensor_type()
可選參數:'torch.cuda.FloatTensor'、 'torch.FloatTensor'
--------------------------------------------
1、在你使用固定大小的圖像進行訓練的時候設置爲True,加快訓練速度
import torch.backends.cudnn as cudnn
cudnn.benchmark = True
上採樣:
1、nn.ConvTranspose2d
逆卷積
(in_channels, out_channels, kernel_size, stride=1,padding=0,output_padding=0, groups=1, bias=True, dilation=1, padding_mode='zeros'):
2、nn.Upsample
已經有新的了下面的3
源碼提示:warnings.warn("nn.functional.upsample is deprecated. Use nn.functional.interpolate instead.")
3、torch.nn.functional.interpolate(in,, size=size2, scale_factor=2, mode='nearest')
因爲可以輸入尺寸,所以這個可以解決單數在下采樣上採樣與原feature結合尺度不一的問題
input, size=None, scale_factor=None, mode='nearest', align_corners=None, recompute_scale_factor=None
---------------------------------------
1、tensor類型的改變
input = torch.Tensor(3, 5)
newtensor = input.long()
newtensor = input.half()
newtensor = input.int()
newtensor = input.double()
newtensor = input.float()
newtensor = input.short()
newtensor = input.type(torch.FloatTensor)
newtensor = input.type(torch.LongTendor)
2、tensor->numpy
tensor.detach().cpu.numpy()
3、numpy->tensor
torch.from_numpy(input)
-----------------------------------------
維度變化:
x = torch.squeeze(x) #張量去除維度爲1的
x = torch.unsqueeze(x, 3) # 在第3個維度上擴展
x = x.permute(0, 2, 3, 1) # 交換維度,重新排列
x = torch.cat(a, b) # 拼接
x = x .reshape(batch,-1) # 改變形狀
x = x.view(batch, -1) # 改變形狀
----------------------------------------------
新建tensor:
res = torch.zeros_like(input)
返回跟input的tensor一個size的全零tensor
----------------------------------------
Class屬性的操作:hasattr()、getattr()、setattr()、分別爲判斷某一個類是否有這個屬性,以及獲取該屬性的值,以及給類是指一個屬性。
class person(object):
def __init__(self):
self.name = 'oo'
setattr(self, 'age', 15)
P = person()
if hasattr(P, 'sex') is False:
setattr(P, 'sex', 'femal')
print(getattr(P, 'sex'))
print(getattr(P, 'age'))