pytorch dataset自定义_pytorch整理-1

###tensor

基本操作:

transpose、view、permute、t()、expand、repeat、cat、stack、squeeze

pytorch 中改变tensor维度(transpose)、拼接(cat)、压缩(squeeze)详解​www.cnblogs.com

eq() 、lt()

PyTorch中tensor.eq()和tensor.lt()_DJames23的博客-CSDN博客​blog.csdn.net

###自定义层

nn.Parameter()

Parameter类其实是Tensor的子类,如果一个TensorParameter,那么它会自动被添加到模型的参数列表里。所以在自定义含模型参数的层时,我们应该将参数定义成Parameter,除了直接定义成Parameter类外,还可以使用ParameterListParameterDict分别定义参数的列表和字典。

从头学pytorch(十一):自定义层 - core! - 博客园​www.cnblogs.com

model.parameters()将_init_()中的parameter加入优化器中,不一定要出现在forward中

HUST小菜鸡:PyTorch中的parameters​zhuanlan.zhihu.com

###grad

with torch.no_grad():
    ...
with torch.no_grad() 详解​blog.csdn.net

###torch.nn.functional

###DataLoader/DataSet/Sampler

三者关系;

一文弄懂Pytorch的DataLoader, DataSet, Sampler之间的关系​www.cnblogs.com

Sample:

Pytorch Sampler详解​cnblogs.com

###torchvision

torchvision包是服务于pytorch深度学习框架的,用来生成图片,视频数据集,和一些流行的模型类和预训练模型. torchvision由以下四个部分组成:

  1. torchvision.datasets : Data loaders for popular vision datasets
  2. torchvision.models : Definitions for popular model architectures, such as AlexNet, VGG, and ResNet and pre-trained models.
  3. torchvision.transforms : Common image transformations such as random crop, rotations etc.
  4. torchvision.utils : Useful stuff such as saving tensor (3 x H x W) as image to disk, given a mini-batch creating a grid of images, etc.
torchvision的理解和学习(翻译torchvision在pypi上的文档)_tsq292978891的博客-CSDN博客_torchvision save_image​blog.csdn.net

transform总结:

pytorch中transform函数详解_HMH2_YY的博客-CSDN博客​blog.csdn.net

###lr_schedulerpytorch中transform函数详解_HMH2_YY的博客-CSDN博客###lr_scheduler

optim:

optimizer.defaults: 字典,存放这个优化器的一些初始参数,有:'lr', 'betas', 'eps', 'weight_decay', 'amsgrad'。事实上这个属性继承自torch.optim.Optimizer父类;
optimizer.param_groups:列表,每个元素都是一个字典,每个元素包含的关键字有:'params', 'lr', 'betas', 'eps', 'weight_decay', 'amsgrad',params类是各个网络的参数放在了一起。这个属性也继承自torch.optim.Optimizer父类。

学习率的调整应该放在optimizer更新之后

scheduler = ...
for epoch in range(100):
     train(...)
     validate(...)
     scheduler.step()
class torch.optim.lr_scheduler.LambdaLR(optimizer, lr_lambda, last_epoch=-1)

new_lr=λ×initial_lr

其中new_lrnew_lrnew_lr是得到的新的学习率,initial_lrinitial_lrinitial_lr是初始的学习率,λlambdaλ是通过参数lr_lambda和epoch得到的。

torch.optim.lr_scheduler:调整学习率_qyhaill的博客-CSDN博客_lr_scheduler​blog.csdn.net

###GPU训练方法

制定GPU

import os
os.environ["CUDA_VISIBLE_DEVICES"] = "0"

或者:
torch.cuda.set_device(0)

使用GPU:

model=model.cuda()
x=x.cuda()
y=y.cuda()

另外:

device=torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
model=model.to(device)
x=x.to(device)
y=y.to(device)

多核训练:

DataParallel

https://mp.weixin.qq.com/s/wKjDHOvu6yImZk_C8JKqVA​mp.weixin.qq.com Mario:Pytorch的nn.DataParallel​zhuanlan.zhihu.com

转化为CPU:

.data.cpu()

###保存和重载模型

# 保存整个网络
torch.save(net, PATH) 
# 保存网络中的参数, 速度快,占空间少
torch.save(net.state_dict(),PATH)
#--------------------------------------------------
#针对上面一般的保存方法,加载的方法分别是:
model_dict=torch.load(PATH)
model_dict=model.load_state_dict(torch.load(PATH))
Mark:Pytorch 保存模型与加载模型​zhuanlan.zhihu.com
源码详解Pytorch的state_dict和load_state_dict - marsggbo - 博客园​www.cnblogs.com torch.load()_weixin_36670529的博客-CSDN博客_torch.load​blog.csdn.net

另外:

pickle.dump

pytorch加载模型与冻结_流星划过夜空的博客-CSDN博客_torch 加载原模型时冻结所有的层​blog.csdn.net

###计算梯度方法

###hook

余霆嵩:PyTorch的hook及其在Grad-CAM中的应用​zhuanlan.zhihu.com

###torchsummary

###修改学习率

pytorch中的学习率调整函数 - 慢行厚积 - 开发者的网上家园​www.cnblogs.com

###manual_seed

可以确保随机初始化一样

###可视化

tensorboard

网络结构画图工具 https://cbovar.github.io/ConvNetDraw/

caffe可视化工具 http://ethereon.github.io/netscope/#/editor

Visual DL https://github.com/PaddlePaddle/VisualDL

PlotNeuralNet(实在太牛了) https://github.com/HarisIqbal88/PlotNeuralNet

深度学习训练过程可视化(附github源码)​mp.weixin.qq.com

###训练细节

model.train() :启用 BatchNormalization 和 Dropout

model.eval() :不启用 BatchNormalization 和 Dropout

contiguous: view只能用在contiguous的variable上。如果在view之前用了transpose, permute等,需要用contiguous()来返回一个contiguous copy。 有些tensor并不是占用一整块内存,而是由不同的数据块组成,而tensor的view()操作依赖于内存是整块的,这时只需要执行contiguous()这个函数,把tensor变成在内存中连续分布的形式。

你可能感兴趣的:(pytorch,dataset自定义,pytorch,load,state,dict,pytorch,weight,decay)