PyTorch
PyTorch学习记录
Stoneplay26
半路出家程序猿
展开
-
PyTorch多GPU模型保存和加载的一个注意事项-Unexpected key(s) in state_dict
用PyTorch加载已经保存好的模型参数文件时遇到一个bug:Unexpected key(s) in state_dict: “module.features. …”.,Expected “.features…”意思是从本地文件中加载模型的state_dict时,state_dict的key值不匹配。查了一些资料后,发现是PyTorch多gpu保存的问题,导致保存下来的state_dict中的key比原来都多了一个module,因此出现了上述这个问题。下面简单验证一下。import torch原创 2020-05-28 14:33:15 · 1672 阅读 · 0 评论 -
排除使用PyTorch时的随机性
训练模型时,同样的超参,同样的参数初始化方式,但训练的结果却不一样,很可能的原因就是框架中的随机型导致,主要是random seed和cudnn带来的。排除random seed的随机性:torch.manual_seed(seed);torch.cuda.mannual_seed_all(seed);np.random.seed(seed);random.seed(seed);...原创 2020-04-13 17:15:32 · 1477 阅读 · 0 评论 -
PyTorch中池化层的padding和ceil_mode参数设置
在池化操作的接口中,padding和ceil_mode这两个参数会影响到输出特征图的大小。padding即对特征图大小进行扩充的像素数量;ceil_mode指明,当剩余的像素不足滤波器大小,是否仍对这些像素进行运算。对于池化操作来说,当stride为1时,希望输出与输入保持不变;当stride为2时,希望输出特征图的宽高均为输入的一半。下面以avg_pool2d讲解如何尽量简单达到上述目的:i...原创 2020-03-20 12:01:12 · 4941 阅读 · 0 评论 -
torch.optim.lr_scheduler源码和cosine学习率策略学习
torch.optim.lr_scheduler是PyTorch中负责调整学习率的模块,常和torch.optim.Optimizer配合使用。class _LRScheduler(object): def __init__(self, optimizer, last_epoch=-1): # 读取相应的Optimizer if not ...原创 2020-03-19 21:11:43 · 5964 阅读 · 0 评论 -
torch.optim.optimizer源码阅读和灵活使用
torch.optim.optimizeroptimizer是PyTorch更新模型参数的工具。PyTorch先定义一个基类Optimizer来实现优化器的基本功能,再用子类实现每一个优化算法相应的优化过程,如SGD、Adam等。原创 2020-03-18 14:46:51 · 3508 阅读 · 1 评论 -
torch.nn.Module和torch.nn.functional的区别
nn.module和nn.functional是torch.nn的两个模块,这两个模块都能实现神经网络的卷积、池化等操作,但又有本质的区别。nn.Module是类,除了要进行相关的计算,还要对module中的参数等属性进行管理;nn.fuctional是函数,只进行相关的计算。下面以nn.Linear和nn.functinal.linear来学习两者的区别:nn.Linear:class L...原创 2020-02-11 21:02:18 · 3212 阅读 · 0 评论 -
torch.nn.Module源码学习
nn.Module是使用pytorch进行神经网络训练的主要载体,是所有网络的基类。首先看一下它的构造函数: def __init__(self): """ Initializes internal Module state, shared by both nn.Module and ScriptModule. """ tor...原创 2020-02-11 19:53:18 · 1286 阅读 · 0 评论 -
pytorch中tensor的基本维度变换:transpose/permute/t/cat/chunk/split/stack/squeeze/unsqueeze/expand/repeat
直接从代码中学习tensor的一些维度变换操作:import torchtorch.manual_seed(2020)x = torch.rand(1, 2, 3)print(x)# tensor([[[0.4869, 0.1052, 0.5883],# [0.1161, 0.4949, 0.2824]]])print(x.view(-1, 3).size()...原创 2020-02-07 21:27:42 · 973 阅读 · 0 评论 -
pytorch中tensor的基本数学运算
直接在代码中认识torch.Tensor的基本数学运算:import torchtorch.manual_seed(2020) # cpu的随机数种子# torch.cuda.manual_seed() # 当前gpu的随机数种子# torch.cuda.manual_seed_all() # 所有gpu的随机数种子# 创建tensorprint('create tensor:...原创 2020-02-07 16:23:16 · 4069 阅读 · 0 评论 -
torch.nn.Parameter理解
Pytorch官网对torch.nn.Parameter()的解释:torch.nn.Parameter是继承自torch.Tensor的子类,其主要作用是作为nn.Module中的参数使用。它与torch.Tensor的区别就是nn.Parameter会自动被认为是module的可训练参数,即加入到parameter()这个迭代器中去;而module中非nn.Parameter()得普通te...原创 2020-02-05 11:13:04 · 43933 阅读 · 2 评论 -
pytorch的自动求导和hook技术简介
在Pytorch的计算图中,由用户手动创建的tensor称为叶子节点,默认不计算梯度,即requires_grad=False。由函数(Function)计算得到的tensor是非叶子节点,requires_grad由参与计算的tensor决定。在整个计算图中,只要有一个节点的requires_grad=True,则所有依赖该节点的节点的requires_grad均为True。tensor.gr...原创 2020-02-01 01:21:39 · 1376 阅读 · 0 评论 -
ImportError: DLL load failed: The operating system cannot run %1.
使用anaconda安装pytorch时,遇到下面的问题:ImportError: DLL load failed: The operating system cannot run %1.ImportError: DLL load failed: The operating system cannot run %1.解决方法:conda install -c defaults intel-o...原创 2020-01-30 23:14:32 · 693 阅读 · 0 评论