pytorch学习笔记十七:官方API文档小总结

一、torch下的常用API,基本上都是对数据进行处理的函数

①操作数据:

torch.is_tensor,torch.set_default_dtype,torch.get_default_dtype,torch.cat,torch.index_select,torch.reshape,torch.squeeze,torch.t,torch.unsqueeze,torch.transpose,torch.take,torch.where

②定义数据(tensor):

torch.tensor,torch.empty,torch.empty_like,torch.full,torch.full_like,torch.ones,
torch.ones_like,torch.zeros,torch.zeros_like,torch.range,torch.arange,torch.line(log)space

③数据转换(主要是从ndarray转过来):

torch.from_numpy,torch.as_tensor()

④随机数:

torch.normal,torch.rand,torch.rand_like,torch.randint,torch.randint_like,torch.randn,torch.randn_like,

⑤数学计算

一般数学计算:torch.abs,torch.add,torch.clamp,torch.exp,torch.log,torch.log10,torch.mm,torch.mul,torch.pow,torch.round,torch.sigmoid,torch.sin,torch.sqrt,

计算数据特征(平均值,方差等等):torch.argmax,torch.argmin,torch.median,torch.norm,torch.std,torch.sum,torch.unique,torch.var,

数据分析与处理:torch.eq,torch.equal,torch.isfinite,torch.isinf,torch.isnan,torch.sort,

谱计算(如fft,ifft):torch.fft,torch.ifft,torch.rfft,torch.hamming_window(汉明窗)

⑥设置计算设备:

device=torch.device(“cpu:0”)或者torch.device(“cuda:0”),也可以直接写”cpu”,”cuda”

二、torch.nn下的常用API,主要是用来搭建网络和对网络进行设置的函数

torch.nn.Module,几乎所有的模型包括layer都是继承于torch.nn.Module类,这样的模型都有以下一些属性,调用格式是model.

add_module(name, module),zero_grad(),apply(fn),cpu(),cuda(device=None),eval()train(mode=True),float(),to(device=None,dtype=None),requires_grad_(requires_grad=True),

②查看模型的层或者参数:

modules(),named_modules(),._modules,parameters(),named_parameters(),children(),named_children(),(带named的函数会同时返回layers和names);state_dict()(字典),load_state_dict(state_dict),

③构建模型:

torch.nn.Sequential,torch.nn.ModuleList,torch.nn.ModuleDict

④添加模型参数:

torch.nn.ParameterList,torch.nn.ParameterDict

⑤layers:

卷积层:torch.nn.Conv2d,torch.nn.ConvTranspose2d,
线性层:torch.nn.Linear,torch.nn.Bilinear(双线性)
池化层:torch.nn.MaxPool2d,torch.nn.AvgPool2d;
展平层:torch.nn.Flatten
归一化层:torch.nn.BatchNorm2d,
丢弃层:torch.nn.Dropout,torch.nn.AlphaDropout(丢弃一部分后,不会改变数据的原方差和均值)
激活函数:torch.nn.LeakyReLU,torch.nn.LogSigmoid,torch.nn.ReLU,torch.nn.SELU,torch.nn.Sigmoid,torch.nn.Tanh,torch.nn.Softmax,
损失函数:torch.nn.MSELoss,torch.nn.CrossEntropyLoss,torch.nn.L1Loss,torch.nn.BCELoss
上采样:torch.nn.Upsample,torch.nn.UpsamplingNearest2d,torch.nn.UpsamplingBilinear2d

三、torch.nn.functional下常用API,主要是一些损失函数和layers,和torch.nn很相似

1、它的几乎所有的函数在torch.nn下都能找到,尤其是那些layers,但是这些相同名字的函数在两个不同的namespace下有以下几个不同点:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、当然还有一些torch.nn下没有的或者都有,但是较常用torch.nn.functional下的

①onehot编码:torch.nn.functional.one_hot(tensor, num_classes=-1)
②loss函数(一般用这个,不用torch.nn的)
torch.nn.functional.binary_cross_entropy_with_logits,torch.nn.functional.binary_cross_entropy,torch.nn.functional.cross_entropy,torch.nn.functional.l1_loss,torch.nn.functional.mse_loss,torch.nn.functional.nll_loss,
③上采样:torch.nn.functional.upsample,torch.nn.functional.upsample_bilinear
torch.nn.functional.upsample_nearest

四、torch.Tensor,先定义tensor=torch.tensor(),然后下面是对tensor能进行的操作

1、torch中的数据类型,主要分为dtype,CPU tensor,GPU tensor三种类型
在这里插入图片描述
在这里插入图片描述
2、tensor自身的属性,很多和torch下的函数差不多,但是它是tensor自己的属性,调用方式是tensor.;而前者的调用方式是torch.

①定义数据:tensor.new_tensor,tensor.new_full,tensor.new_ones,tensor.new_empty,tensor.new_zeros

②查看tensor的属性:tensor.is_cuda,tensor.device,tensor.grad(常用),tensor.ndim,requires_grad

③对tensor进行计算操作:tensor.T,tensor.abs() ,tensor.abs_(),tensor.add(value),tensor.add_(value),tensor.argmax(),tensor.argmin(),tensor.backward(常用),clamp(min, max),clamp_(min, max),cos(),cos_(),div(),div_(),double(),dot(),eq(),eq_(),equal(),exp(),exp_(),min(),max(),mean(),median(),pow(),pow_(),repeat(常用),sort(),sqrt() ,sqrt_() ,

④index操作:index_add,index_add_,index_fill_,index_fill,index_select

⑤对tensor进行转换:bool() ,byte(), char() ,clone(常用),cuda(常用),cpu(常用),detach(常用),detach_(常用),item(常用), numpy(常用),permute(常用,维度交换),requires_grad_(requires_grad=True,常用),reshape(*shape),
reshape_as(other),resize_(*sizes),resize_as_(other),to(device=None,dtype=None),view(*shape),view_as(other),where(condition, y)

⑥对bool类型的tensor操作:all(),any()

五、torch.cuda下的常用API

torch.cuda.current_device(),torch.cuda.device_count(),torch.cuda.get_device_name,torch.cuda.init(),torch.cuda.is_available(),torch.cuda.is_initialized(),torch.cuda.set_device

六、torch.nn.init下的常用API,用来初始化tensor

torch.nn.init.uniform_(tensor, a=0.0, b=1.0),torch.nn.init.normal_(tensor, mean=0.0, std=1.0),torch.nn.init.constant_(tensor, val),torch.nn.init.ones_(tensor),torch.nn.init.zeros_(tensor)

七、torch.optim下的常用API,用来选择优化算法以定义优化器

①常用优化算法:torch.optim.Adam,torch.optim.SGD,它们都有属性.step()
②example:三种传递形参的方式,最后一个适合迁移学习,因为不同层需要的优化力度不一样

optimizer = optim.SGD(model.parameters(), lr=0.01, momentum=0.9)
optimizer = optim.Adam([var1, var2], lr=0.0001)
optim.SGD([
                {
    
    'params': model.base.parameters()},
                {
    
    'params': model.classifier.parameters(), 'lr': 1e-3}
            ], lr=1e-2, momentum=0.9)

③优化学习率lr的方法:
torch.optim.lr_scheduler.LambdaLR(optimizer, lr_lambda, last_epoch=-1),
torch.optim.lr_scheduler.MultiplicativeLR(optimizer, lr_lambda, last_epoch=-1)

八、torch.utils.data下的常用API,用来生成数据集

生成数据集:torch.utils.data.Dataset,torch.utils.data.DataLoader(可设batch_size,shuffle等参数)

九、torch.hub下的常用API,主要用来下载一些模型

torch.hub.list(github, force_reload=False)
torch.hub.help(github, model, force_reload=False)
torch.hub.load(github, model, *args, **kwargs)
torch.hub.download_url_to_file(url, dst, hash_prefix=None, progress=True)
torch.hub.load_state_dict_from_url(url, model_dir=None, map_location=None, progress=True, check_hash=False)

十、torchvision下常用API,主要用来下载一些数据集和模型,还可以对数据进行transform

①torchvision.datasets:

torchvision.datasets.MNIST(root,train=True,transform=None,target_transform=None, download=False)
torchvision.datasets.FashionMNIST(root, train=True, transform=None, target_transform=None, download=False)
torchvision.datasets.CocoCaptions(root, annFile, transform=None, target_transform=None, transforms=None)
torchvision.datasets.ImageFolder(root, transform=None, target_transform=None, loader=, is_valid_file=None)
在这里插入图片描述

②图像数据转换:

torchvision.transforms.Compose(transforms),transforms就是一些数据处理方法,比如:
CenterCrop,ToTensor,RandomCrop,RandomHorizontalFlip,RandomResizedCrop,Resize

③对tensor进行转换,一般是用到图像数据转换后,因为图像转换后就是tensor:

Normalize

④将tensor矩阵反变换成PIL格式的图像:

torchvision.transforms.ToPILImage

猜你喜欢

转载自blog.csdn.net/qq_39507748/article/details/110756605
今日推荐