Pytorch
文章平均质量分 72
Jiyang@UESTC
Talk is cheap, show me the code.
展开
-
详解Pytorch中的requires_grad、叶子节点与非叶子节点、with torch.no_grad()、model.eval()、model.train()、BatchNorm层
requires_gradrequire_grad意为是否需要计算梯度使用backward()函数反向传播计算梯度时,并不是计算所有tensor的梯度,只有满足下面条件的tensor的梯度才会被计算:1. 当前tensor的 require_grad=True(代码示例一);2. 依赖于该tensor的所有tensor的 require_grad=True,即可以获得依赖于该tensor的所有tensor的梯度值。在所有的require_grad=True中默认情况下,**非叶子节点**的梯度值原创 2021-07-11 18:04:22 · 8459 阅读 · 9 评论 -
Pytorch中state_dict()、named_parameters()和parameters()的区别
序言Pytorch中有3个功能极其类似的方法,分别是model.parameters()、model.named_parameters()和model.state_dict(),下面就来探究一下这三种方法的区别。它们的差异主要体现在3方面:返回值类型不同存储的模型参数的种类不同返回的值的require_grad属性不同测试代码准备工作import torchimport torch.nn as nnimport torch.optim as optimimpo原创 2021-07-09 16:29:05 · 3219 阅读 · 3 评论 -
图解Pytorch DataLoader源码分析
动机在实验时,碰到了需要自定义Sampler的情况。因此,出于使自己放心的动机,对DataLoader的源码进行了分析,了解了DataLoader的内部运行机制,明白了其是如何通过Sampler来操作DataSet中的数据的,这下可以放心的写Sampler了!相关概念可迭代对象可迭代对象是 使用内置函数 iter() 可以获取 迭代器 的对象,即要么对象实现了能返回迭代器的 __init__() 方法要么对象实现了 __getitem__()方法,而且其参数是从零开始的索引内置的 it原创 2021-07-09 09:14:27 · 305 阅读 · 0 评论 -
在Pytorch中使用Tensorboard进行数据可视化
Introduction在Pytorch中,可以使用Tensorboard来进行数据可视化使用的类是torch.utils.tensorboard.writer.SummaryWriterMethodstorch.utils.tensorboard.writer.SummaryWriter(log_dir=None,comment='',purge_step=None,max_queue=10,flush_secs=120,filename_suffix='')具体的方法'原创 2021-07-09 09:04:58 · 235 阅读 · 0 评论 -
Pytorch在训练时冻结某些层使其不参与训练(更新梯度)
Pytorch在训练时冻结某些层首先,我们知道,深度学习网络中的参数是通过计算梯度,在反向传播进行更新的,从而能得到一个优秀的参数,但是有的时候,我们想固定其中的某些层的参数不参与反向传播。比如说,进行微调时,我们想固定已经加载预训练模型的参数部分,只想更新最后一层的分类器,这时应该怎么做呢。定义网络# 定义一个简单的网络class net(nn.Module): def __init__(self, num_class=10): super(net, self).__ini原创 2021-07-07 15:12:07 · 26356 阅读 · 16 评论