在写网络初始设置的,设置以后,之后创建的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:
a = torch.rand(3, 3)
a = torch.ones(3, 3) # 3*3,全1矩阵
a = torch.zeros(3, 3) # 3*3,全0矩阵
a = torch.eye(3, 3) # 3*3,对角线1
b = torch.zeros_like(a) 返回跟input的tensor一个size的全零tensor
clamp 与clamp_ 类似np.clip()函数,限制大小,小于min的值变为min大于max的值变为max,有下划线的表示修改并付给自身,无下划线的表示需要返回处理后的值,比如:
h = k.clamp(min=0,max=255) #将结果存入h,k保留原值
k.clamp_(min=0,max=255) # 将结果存入k
----------------------------------------
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'))