Pytorch 常用函数_个人记录不断加入

在写网络初始设置的,设置以后,之后创建的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'))

 

你可能感兴趣的:(pytorch,深度学习,python)