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
v2-45d27823c6ad25115a4ee8afc4950768_ipico.jpg

###自定义层

nn.Parameter()

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

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

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

HUST小菜鸡:PyTorch中的parameters​zhuanlan.zhihu.com
v2-30b5f4ea408c776df18570013d6deefb_180x120.jpg

###grad

with torch.no_grad():
    ...
with torch.no_grad() 详解​blog.csdn.net
v2-2a5027b5bff83f50a189c6146b4f7548_ipico.jpg

###torch.nn.functional

###DataLoader/DataSet/Sampler

三者关系;

一文弄懂Pytorch的DataLoader, DataSet, Sampler之间的关系​www.cnblogs.com
v2-3e3fbd33f665658829faf0e8b717556b_180x120.jpg

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
v2-3d6f0b0cdd7632882b0ca6d20143ea66_ipico.jpg

transform总结:

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

###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
v2-1bad115f021c135e2959ad838169d38d_ipico.jpg

###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
v2-3b5274fd2acd0ae51bf2337956894eef_180x120.jpg

转化为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
v2-0b29c32ebfa76560d815d8916ad6d1a4_180x120.jpg
源码详解Pytorch的state_dict和load_state_dict - marsggbo - 博客园​www.cnblogs.com torch.load()_weixin_36670529的博客-CSDN博客_torch.load​blog.csdn.net
v2-45332bdd3d9362b13eab0ebd98e7e15c_ipico.jpg

另外:

pickle.dump

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

###计算梯度方法

###hook

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

###torchsummary

###修改学习率

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

###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
v2-1e81bbc913a018c045ac6edcc60a936c_ipico.jpg

###训练细节

model.train() :启用 BatchNormalization 和 Dropout

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值